Пользовательский адаптер массива

Я пишу новостное приложение и у меня возникают проблемы с отображением пользовательского списка. Все, что я хочу, это чтобы в элементах списка было 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
    }
});
Другие вопросы по тегам