Адаптер и ListView

#java #android #eclipse

#java #Android #eclipse

Вопрос:

Я хочу получить список. Каждая строка — mas[i]. Онемение — это инт. Я получил ошибку eclipse:

Конструктор ArrayAdapter(новый вид.OnClickListener(){}, int, String[]) не определено

  public class FirstActivity extends ListActivity {
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            TextView NumbZK = (TextView)findViewById(R.id.editText2);   
            final int Numb = Integer.parseInt(NumbZK.getText().toString()); 

            TextView modN = (TextView)findViewById(R.id.editText1); 
            final int N = Integer.parseInt(modN.getText().toString());  

            String[] mas = new String[N];
            for (int i=0; i<N;i  ){
                mas[i]=Integer.toString(Numb%(i 1));
            }
            ListView lView = (ListView)findViewById(R.id.list);
            lView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, mas));


        }
    });
 }
}
 

XML:

 <ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@ id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:drawSelectorOnTop="false"
    />
 

Справка

Комментарии:

1. Можете ли вы предоставить нам свой XML-файл? Так легче увидеть проблему

2. </LinearLayout> <ListView xmlns:android=» schemas.android.com/apk/res/android » android:id=»@android:id /список» android: layout_width=»match_parent» android:layout_height=»match_parent» android: drawSelectorOnTop=»false» />

3. 10-25 09:49:53.381: ОШИБКА / AndroidRuntime(14724): java.lang.RuntimeException: Невозможно запустить activity ComponentInfo{com.bla/com.bla.FirstActivity}: java.lang.RuntimeException: ваш контент должен иметь ListView, атрибут id которого ‘android.R.id .список’

Ответ №1:

Если ваш Activity расширяется от ListActivity , вам нужно объявить a ListView with android:id="@android:id/list" в вашем макете. Затем вы можете получить ListView , позвонив getListView() в свой Activity

Ссылка: http://developer.android.com/reference/android/app/ListActivity.html

Комментарии:

1. Нравится это?——— ListView LView = (ListView)findViewById(android.R.id.list); LView.setAdapter(новый ArrayAdapter<Строка>(это, android.R.layout.simple_list_item_1, mas)); <ListView xmlns:android=» schemas.android.com/apk/res/android » android:id=»@android:id /список» android: layout_width=»match_parent» android:layout_height=»match_parent» android: drawSelectorOnTop=»false» /> ——— получаем ошибку eclipse: конструктор ArrayAdapter<строка>(новый вид. OnClickListener(){}, int, String[]) не определено

2. Теперь вы получаете еще одну несвязанную ошибку, отредактируйте свой вопрос и добавьте больше кода.

3. Кажется, вы запускаете этот код внутри OnClickListener? Почему это так?

4. Потому что мне нужно сделать это после того, как я нажму на кнопку.

Ответ №2:

 android:id="@ id/lView"
 

Поскольку это то, что вы ищете в своей деятельности.

Комментарии:

1. Это так, если вы расширяете Activity, а не ListActivity! Я делал это раньше много раз.

2. Я уверен, что он расширяет ListActivity, поскольку это ошибка, которую он получает: «ваш контент должен иметь listview, идентификатор атрибута которого равен «android.r.id.list»

3. Для голосования требуется 15 репутации

Ответ №3:

 mas[i]="" (Numb%(i 1));
 

рассмотрите возможность замены приведенной выше строки на

 mas[i] = ""   Integer.toString(Numb%(i 1));
 

после просмотра вашего xml,

 ListView lView = (ListView)findViewById(R.id.lView);
 

замените это на

 ListView lView = (ListView)findViewById(R.id.list);
 

а также

 lView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, mas));
 

с

 lView.setAdapter(new ArrayAdapter<String>(youractivity.this,android.R.layout.simple_list_item_1, mas));
 

это должно быть заменено контекстом, этот метод не будет работать для onclicklistener.

ХТХ.

Комментарии:

1. Вы можете просто использовать getListView() вместо поиска представления по идентификатору.

2. Только если это ListActivity .

3. сделано, но теперь произошла ошибка eclipse: конструктор ArrayAdapter<String>(новый вид. OnClickListener(){}, int, String[]) не определено

4. проверьте мой отредактированный ответ, это проблема с 1-м аргументом «this», вы должны поместить в него контекст действия. примите ответ, если он вам подходит.

5. О, это работа. Но теперь получил предыдущую ошибку в logcat: 10-25 11:50:40.000: ОШИБКА / AndroidRuntime (14950): java.lang.RuntimeException: Невозможно запустить activity ComponentInfo{com.bla/com.bla.FirstActivity}: java.lang.RuntimeException: ваш контент должен иметь ListView, атрибут id которого это «android.R.id.list»

Ответ №4:

Попробуйте добавить:

 <ListView android:id="@android:id/lView/>
 

В файле макета