2011-04-07 75 views
1

我試圖更新CursorAdapter在其數據修改後顯示的視圖。 每行包含一個圖像。當我觸摸此圖像時,數據庫將更新,並且我想修改關於此數據更新的圖像。光標更新後的BindView

除了光標上的查詢我沒有找到解決方案...我的數據庫真的很大,查詢太重了。你有更好的解決方案嗎?

回答

0

是的,有時候詢問並不是最好的解決方案。我通常做的是在數據庫適配器中創建幫助方法來檢索代碼片段。這是我的一個適配器的摘錄:

@Override 
public void bindView(View view, final Context context, Cursor cursor) { 
    String name = cursor.getString(cursor.getColumnIndex("name")); 
    long id = cursor.getLong(cursor.getColumnIndex("_id")); 
    ((TextView)view.findViewById(R.id.name)).setText(name); 

    Button btnFavorite = (Button) view.findViewById(R.id.item_add_favorite); 
    btnFavorite.setTag(id); 
    btnFavorite.setOnClickListener(mFavoriteCliked); 
} 

我做的是基本設置的點擊收聽到的圖片,並確保它需要照顧的變化它的狀態正確:

private OnClickListener mFavoriteCliked = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // change the image of the v object 
    } 
}; 
+1

數據庫更新時,光標不會更改。每行的圖像將由bindView()中的舊遊標重繪。數據庫更改,但視圖沒有。如果光標沒有改變,你如何改變視圖?在光標上請求將解決問題,但效率不高。 – Emerald214 2011-06-28 18:14:42