我刚开始使用Android SDK,我有一个简单的问题。我试图在左边设置一个带有矩形颜色的ListView,然后为每一行设置一些文本。我也想这样做,所以我可以点击列表中的每个条目并打开一个新的活动来显示一些信息(类似于联系人列表)。任何人都有任何事例来帮助我?在Android上使用ListViews?
回答
Here is an excerpt来自one of my books,它讨论了复杂的列表行,就像你正在描述的那样。
如果您希望避免使用BaseAdapter的子类,但希望使用基于对象的自定义项目视图和自定义项目点击逻辑,以下是我所做的。
在我的代码中,我正在处理一些模型对象的集合。我想在ListView中显示这个模型对象的集合。我不能只将ModelObject的ArrayList传递给SimpleAdapter,因为它期待键值对的列表(类似于List<Map<String, Object>>
)。因此,我没有在应用程序中使用我的对象的简单集合,而是创建了一个自定义类来表示我的集合,它只是从我正在使用的结构派生而来。这样,我可以继续像以前一样使用它,但是我可以添加一个方法,将其从代码友好的集合转换为SimpleAdapter友好的集合。在我的情况下,我使用了一些由字符串属性(如HashMap<String, ModelObject>
)键入的HashMap。我的自定义收藏类将是ModelObjects
(复数)延伸HashMap<String, ModelObject>
。然后,ModelObjects
将包含一个ToList()
方法,其中我将对象转换为ArrayList<? extends HashMap<String, ?>>
,然后我可以将其传递给SimpleAdapter构造函数以将其显示在具有自定义视图的列表中。
所以我现在可以构造一个SimpleAdapter与下列五个参数:
- 我的列表(在我的情况下,含活性)
- 我的目录(如上所述)的上下文
- 的这些项目的自定义布局的标识(R.layout.custom_list_item)
- 属性名称的字符串数组。这些是我的ToList方法在HashMap中的键。
- 每个项的属性映射在上述(#4)到View衍生元素的id在我的自定义布局
然后,在我的OnItemClickListener.onItemClick方法的int数组,我可以使用ARG3获取我点击列表中项目的位置,并使用它从我的集合中挑选出对象。你可以根据物品的任何属性采取行动,或者在物品的某些属性上做一个大开关/案例来启动特定的活动或类似的东西。
唯一的窍门是您需要在未修改的活动中存储集合的本地副本。否则,您可能会在onItemClick中通过id查找一个对象,并获得与您所期望的不同的对象。这可能与上下文略有不同,但这里是我的代码的样子:
ListView lvArtists = (ListView)findViewById(R.id.lvArtists);
SimpleAdapter adapter = new SimpleAdapter(
this,
artists.ToList(),
R.layout.artist_list_item,
new String[] { "name", "imageIdSmall", "tracksCount", "tracksPending" },
new int[] { R.id.artistListItemName, R.id.artistListItemImage, R.id.artistListItemAudioClips, R.id.artistListItemAudioClipsPending }
);
lvArtists.setAdapter(adapter);
lvArtists.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Artist artist = artists.getSortedItem((int)arg3);
mArtistDialog.setArtist(artist);
mArtistDialog.show();
}
});
- 1. Android:如何使用Checked ListViews
- 2. Android Edittext listviews?
- 3. Android - 如何使用嵌套ListViews
- 4. 如何在Android Studio中使用CustomAdapter创建多个布局ListViews
- 5. Android ListViews:更新ListView的headerView
- 6. Android:与ListViews和CheckBoxes问题
- 7. 用Android的多个ListViews滚动
- 8. ImageViews在ListViews
- 9. 关于Android ListViews和ArrayAdapters的问题
- 10. 带有ListViews性能的Android ViewPager
- 11. Android CursorAdapters,ListViews和后台线程
- 12. Android的两个ListViews间距和布局
- 13. 并行同步两个ListViews Android
- 14. Android中单个Activity中的多个Listviews?
- 15. Android多个listviews和setSelectionFromTop()错误?
- 16. 使用ListViews的垂直图库实现
- 17. 我应该使用多个ListViews吗?
- 18. 如何重新使用ListViews的方法?
- 19. 使用嵌套ListViews显示IGrouping <>
- 20. jQuery手机:在ListViews中启用Word Wrap
- 21. 在ActionBar后面的ListViews
- 22. ListViews里面TableLayout
- 23. Android:SQLite和ListViews
- 24. Listviews text-font
- 25. C#拖放ListViews
- 26. Android 3.0及以上版本中的两个ListViews在一个活动中
- 27. 使用scrollIntoView在WinJS Metro应用程序中定位ListViews
- 28. 原生Android 4.0应用程序如何快速滚动ListViews?
- 29. android:在两个listactivities中有两个listviews没有工作
- 30. 在android中执行多个listviews的最佳方式是什么?