2011-01-28 40 views
1

我正在使用SimpleCursorAdapter來填充ListView與我的數據庫中的項目。當用戶點擊一個項目時,它會將它們帶到該項目的詳細Activity。顯示該頁面的最佳做法是什麼?只需編寫一個顯示函數來抓取我想要設置文本的所有TextView並從數據庫填充它們或使用另一個SimpleCursorAdapter來設置TextViews?如果答案是使用適配器,我是否必須在ListView中推送詳細信息頁面?這樣做的使用適配器的非列表視圖

回答

4

我相信最好的方法是在列表活動中提取一些id並將該id(在intent中)傳遞給detail Activity。

如果沒有那麼多的數據,你可以發送意圖的額外內容。問題在於意圖的目的不是將複雜的數據(大量的數據)從一個活動發送到另一個活動。

在詳細活動中,您可以從數據庫中獲取數據(例如:select * from people where id = 123)。現在您可以將該表的列映射到一個簡單的對象。

例如:

public class Person { 
    String name; 
    Integer age; 
    String address; 
} 

最後一步,以顯示數據到用戶,抓住從佈局一些textviews並設置它們的文字與你的人從數據庫中得到你的價值觀。

TextView ageTv = (TextView)findViewById(R.id.age); 
ageTv.setText(person.age + " years old"); 
//etc 

沒有必要在細節活動

+0

好的,那是我目前正在做的。我只是想知道這種風格是否在這種情況下使用適配器。 – 2011-01-31 22:31:43

0

幾個方面:

  • 項偵聽器,只需裝到ListView和內,調用一個新的意圖,並通過它的一些數據(少量數據的最好)。
  • 或者你可以在詳細的活動列表視圖中創建另一個適配器,這也將使用一個簡單的遊標適配器來從你的sqlite數據庫中提取細節。 (更多數據)

這實際上取決於你正試圖解決的問題。 SimpleCursorAdapter不是來自於數組邏輯,還是來自數組邏輯,對於所有設置的整潔解決方案,獲取內容?

+0

SimpleCursorAdapter是一個很好的解決方案,我只是想知道是不是奇怪的事推動不列表到ListViews讓它工作。 – 2011-01-28 19:02:28

1

傑森

您有沒有必要在這種情況下使用適配器使用一個ListView,它是更爲複雜和資源比必要密集。列表視圖帶來很多的副作用,他們包括沿着但不限於:

  • 聽衆的滾動和觸摸事件
  • 小視圖對象的許多行,帶走可用內存
  • 如果你不回收那些行中,然後被從磁盤讀取和多次重新充氣
  • 幾個重複調用兒童onMeasure繪製視圖層次和估計ListView的大小時()

通過不恰當地使用ListViewAdapter範例,基本上你正在浪費內存和cpu時間。所有你需要的是一個Cursor爲你的數據,TextViews來顯示它,一個ScrollView和(LinearLayout || RelativeLayout)來保存TextView s將滾動,如果他們太大,不適合在屏幕上一次。