Пользовательский адаптер массива
Я пишу новостное приложение и у меня возникают проблемы с отображением пользовательского списка. Все, что я хочу, это чтобы в элементах списка было 2 TextViews:
- Новости-Название и
- Новости-Описание
Они содержатся в 2 статических массивах: homeScreen.title[] и homeScreen.descriptionLong[].
Ниже у вас есть мой код для HashMap и адаптера:
окончательный статический ArrayList> data = new ArrayList>();
static{
HashMap<String, String> row = new HashMap<String, String>();
for (int i = 0; i<HomeScreen.arrayLength; i++){
row.put("Title", HomeScreen.title[i]);
row.put("Description", HomeScreen.descriptionLong[i]);
data.add(row);
}
}
SimpleAdapter adapter = new SimpleAdapter(this,
data,
R.layout.mainmenu,
new String[] {"Title", "Description"},
new int[] { R.id.textView1, R.id.textView2});
setListAdapter(adapter);
}
public void onItemClick(SimpleAdapter arg0, View arg1, int position,
long id) {
selectedNews = position;
Toast.makeText(getApplicationContext(), "This is: " + selectedNews, Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainMenu.this, ReadNews.class);
startActivity(intent);
}
У меня проблема в том, что он отображает только мою 20-ю (последнюю) новостную информацию, а также OnItemClick по умолчанию больше не работает. Буду признателен за вашу помощь...
1 ответ
Решение
Вы должны поставить row
инстанцирование внутри for
цикл:
for (int i = 0; i<HomeScreen.arrayLength; i++){
HashMap<String, String> row = new HashMap<String, String>();
row.put("Title", HomeScreen.title[i]);
row.put("Description", HomeScreen.descriptionLong[i]);
data.add(row);
}
Обновить:
Ваш OnItemClickListener
регистрация должна выглядеть примерно так:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// your code here
}
});