定制阵列适配器

时间:2011-11-13 16:33:33

标签: android arrays listview adapter custom-component

我正在撰写新闻应用,但在显示自定义列表方面遇到了一些麻烦。我想要的是列表项中包含2个TextView:

  • 新闻标题和
  • 新闻 - 描述

这些包含在2个静态数组中:homeScreen.title []和homeScreen.descriptionLong []。

降低你的HashMap和适配器的代码:

final static 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 个答案:

答案 0 :(得分:2)

您应该将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
    }
});