2011-04-07 57 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