2009-08-14 49 views
2

我正在構建一個具有ListActivity的應用程序,每個項目的視圖都有一個進度條。我已經能夠將我的數據綁定到TextView,但我似乎無法弄清楚如何將它綁定到ProgressBar的最大值和進度。如何將數據綁定到進度條的屬性?

這是我的看法的一個簡化版本:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<TextView android:id="@+id/text1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:layout_alignParentLeft="true"/> 
<ProgressBar android:id="@+id/progress_bar" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/text1" 
    /> 
</RelativeLayout> 

和我使用同樣的方法,記事本教程把我的數據到觀點:

String[] from = new String[]{MyDbAdapter.KEY_AMOUNT}; 
int[] to = new int[]{R.id.text1}; 
SimpleCursorAdapter list_adapter = 
    new SimpleCursorAdapter(this, R.layout.item_row, myCursor, from, to); 
setListAdapter(list_adapter); 

添加MyDbAdapter。數組的KEY_AMOUNT和R.id.progress_bar引發異常(java.lang.IllegalStateException:android.widget.ProgressBar不是可以被此SimpleCursorAdapter限制的視圖)。是否有某種@我需要用max和progress來完成這項工作?

回答

2

您可能需要覆蓋bindView()(可能還有newView())並在Java代碼中「手工」執行綁定。 SimpleCursorAdapter知道如何自動處理TextView和孩子,但其他一切都需要幫助。

+0

剛纔我有同樣的問題,事實證明,只是設置實現SimpleCursorAdapter.ViewBinder的自定義類做了工作,不需要重寫bindView。當然,我使用的是android.support.v4.widget.SimpleCursorAdapter,所以我不確定這是否有所作爲。 – Bilthon 2012-04-08 06:02:35

+0

@Bilthon您可以請客氣一點,並在示例代碼中添加一個答案,您是如何使用進度條進行操作的?我嘗試過ViewBinder,但它不允許我將'View view'參數轉換爲'ProgressBar'類型。 – 2016-05-19 02:56:19

3

您必須創建一個實現SimpleCursorAdapter的新類。 ViewBinder並覆蓋setViewValue(View view, Cursor cursor, int columnIndex)方法來實現您希望進度條對返回的遊標數據執行的操作。

然後您撥打list_adapter.setViewBinder(ViewBinder)並將您的新ViewBinder對象傳遞給那裏。

相關問題