#java #android
#java #Android
Вопрос:
Кто-нибудь может мне помочь? Я пытаюсь создать ListView в Android, и я пытаюсь загрузить элементы в него, используя код (не используя XML)
Вот код, который у меня есть на данный момент
tweetList = (ListView)this.findViewById(R.id.tweetListView);
TextView tv;
for(int i=0;i<20;i )
{
tv = new TextView(this);
tv.setText("I'm a textView");
tweetList.addHeaderView(tv);
}
tweetList.invalidate();
Что я делаю не так? Элементы не отображаются во время выполнения
РЕДАКТИРОВАТЬ: я изменил код в соответствии с ответами ниже, и вот код, который у меня есть сейчас
tweetList = (ListView)this.findViewById(R.id.tweetListView);
ArrayAdapter<TextView> aa = new ArrayAdapter<TextView>(this, R.id.tweetListView);
tweetList.setAdapter(aa);
TextView tv;
for(int i=0;i<20;i )
{
tv = new TextView(this);
tv.setText("I'm a textView");
//tweetList.addHeaderView(tv);
aa.add(tv);
}
tweetList.invalidate();
Сейчас я получаю исключение
11-10 01:32:16.002: ERROR/AndroidRuntime(867): android.content.res.Resources$NotFoundException: Resource ID #0x7f050030 type #0x12 is not valid
Почему я не могу добавлять их динамически сейчас?
Комментарии:
1. Теперь вы предоставляете поле id в ArrayAdapter, в то время как оно должно быть элементом макета.
Ответ №1:
Вам нужно использовать ArrayAdapter
и добавить его в ListView
. Затем просто добавляйте элементы в ArrayAdapter
динамически.
Например:
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1);
tweetList.setAdapter(arrayAdapter);
// ...
arrayAdapter.add("New Item");
Комментарии:
1. СПАСИБО, ЧУВАК, ты молодец!!!!! У меня была ошибка в объявлении адаптера, после исправления адаптер теперь работает
2. Теперь у меня другая проблема, я пытаюсь добавить TextViews в ListView, возможно ли это вообще, как мы делаем в WPF? теперь все элементы в listview отображаются как ‘android.widget.textview@someID ‘
3. @user974038 попробуйте
ArrayAdapter<TextView>
вместоArrayAdapter<String>
4. Что здесь такое «контекст»?? Потому что ‘this’ не работает, потому что это не тип android.content. Контекст
Ответ №2:
Представление заголовка — это просто заголовок, а не элементы в списке. Ваш listview получает свое содержимое через адаптер. ListView
Не сохраняет Views
для своих дочерних элементов, но это адаптер, который создает их и заполняет соответствующими данными, когда их нужно отобразить на экране. Найдите базовые руководства о том, как это сделать, их там много; и помните, что адаптеры — это ключ.