2010-04-23 64 views
2

我剛剛在幾周前在android中開始編程,所以我不完全確定如何處理列表值。請幫助我! 我有一些關於從列表中顯示數據集的問題。目前我有一個遊標由我的db點返回到行列表中,我希望在列表的單行中顯示2列值。行XML看起來是這樣的:計算db數據,然後使用SimpleCursorAdapter或ArrayAdapter列出它們

<TextView android:id="@+id/text1" 
    android:textSize="16sp" 
    android:textStyle="bold" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"/> 

<TextView android:id="@+id/text2" 
    android:textSize="14sp" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"/> 

所以我用simplecursoradapter這理應使我的生活在一個列表中顯示的數據更容易思考。但是,只有當我想顯示原始數據時纔是如此。 爲了我的程序的目的,我需要對原始數據集進行一些計算,然後顯示它們。我不知道如何使用SimpleCursorAdapter來做到這一點。下面是如何顯示的原始數據:

String[] from = new String[]{BtDbAdapter.KEY_EX_TYPE,BtDbAdapter.KEY_EX_TIMESTAMP}; 

    int[] to = new int[]{R.id.text1, R.id.text2}; 

    // Now create a simple cursor adapter and set it to display 
    SimpleCursorAdapter records = 
      new SimpleCursorAdapter(this, R.layout.exset_row, mExsetCursor, from, to); 

    setListAdapter(records); 

有沒有辦法做到在數據計算中的行之前,我與SimpleCursorAdapter綁定呢?我試圖通過使用arraylist和arrayadapter使用另一種方式來做到這一點,但這樣我不知道如何實現在單行中顯示2項。

這是我使用arrayadapter代碼只顯示1箇中的文本行,而不是2個textviews一排:

//fill in the array 
    timestamp_arr = new ArrayList<String>(); 
    type_arr = new ArrayList<String>(); 
    fillRecord(); 

    Log.d(TAG,"setting now in recordlist"); 
    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item,timestamp_arr)); 
    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item2,type_arr)); 

這是非常明顯的,它只是顯示一個TextView的一排,因爲我設置第二個arrayadapter覆蓋第一個!我試圖爲他們使用R.id.text1和R.id.text2,但它給了我一些錯誤,說: 04-23 01:40:58.658:ERROR/AndroidRuntime(3309):android.content.res.Resources $ NotFoundException:資源ID#0x7f070008類型#0x12無效

我相信第二種方法可以實現這一點,但我不知道如何處理佈局問題,所以如果您有任何建議,請發佈出來。謝謝!!

回答

0

SimpleCursorAdapter就是這樣,錯了簡單。更詳細的要求需要不同的適配器。在你的情況下,切換到ResourceCursorAdapter並覆蓋bindView()。調用view.findViewById(R.id.text1),從光標獲取數據,進行修改並將文本設置爲視圖。

我會避免切換到ArrayAdapter你的情況。例如。您可以輕鬆刷新遊標適配器,它將消耗更少的資源並且更好地擴展。

相關問題