我剛開始使用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. ListActivities如何在Android中使用ListViews?
- 3. Android - Android UI上的雙重ListViews碎片
- 4. Android ViewPager和ListViews
- 5. Android Edittext listviews?
- 6. Android - 如何使用嵌套ListViews
- 7. 如何在Android Studio中使用CustomAdapter創建多個佈局ListViews
- 8. Android:與ListViews和CheckBoxes問題
- 9. Android - 管理ViewHolders的ListViews
- 10. Android ListViews:更新ListView的headerView
- 11. 用Android的多個ListViews滾動
- 12. Android:用於ListViews的Vogella上下文動作模式與圖片
- 13. ImageViews在ListViews
- 14. TextView上面兩個ListViews
- 15. Android:使用FragmentTransaction通過片段顯示兩個ListViews
- 16. 我如何使用viewpager在片段中使用不同的listviews
- 17. 如何重新使用ListViews的方法?
- 18. 我應該使用多個ListViews嗎?
- 19. 使用ListViews的垂直圖庫實現
- 20. 使用嵌套ListViews顯示IGrouping <>
- 21. Android爲ListVIews單獨的空視圖
- 22. 並行同步兩個ListViews Android
- 23. Android CursorAdapters,ListViews和後臺線程
- 24. Android中單個Activity中的多個Listviews?
- 25. 關於Android ListViews和ArrayAdapters的問題
- 26. 帶有ListViews性能的Android ViewPager
- 27. 不需要整個活動的Android ListViews?
- 28. Array for 2 listviews in 1 Android Activity
- 29. Android的兩個ListViews間距和佈局
- 30. Android多個listviews和setSelectionFromTop()錯誤?