2011-04-07 7 views
1

데이터 수정 직후에 CursorAdapter가 표시 한 뷰를 업데이트하려고합니다. 각 행에는 이미지가 포함되어 있습니다. 이 이미지를 터치하면 데이터베이스가 업데이트되고이 데이터 업데이트와 관련된 이미지를 수정하려고합니다.커서 업데이트 후 BindView

커서상의 쿼리를 제외하고는 솔루션을 찾지 못했습니다 ... 데이터베이스가 너무 커서 쿼리가 너무 무거워요. 더 나은 해결책이 있습니까?

답변

0

예, 때로는 재귀가 최상의 솔루션이 아닙니다. 일반적으로 데이터베이스 어댑터에서 코드 조각을 검색하는 데 도움이되는 메소드를 작성합니다.

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

:

나는 기본적으로 이미지에 클릭 리스너를 설정 ... 그리고하게되는 일을
@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); } 

확실히 그것의 상태를 제대로 변경을 처리한다 : 이것은 내 어댑터 중 하나의 발췌 한 것입니다 데이터베이스가 업데이트되면 커서는 변경되지 않습니다. 각 행의 이미지는 bindView()의 이전 커서에 의해 다시 그려집니다. 데이터베이스는 변경되지만 뷰는 변경되지 않습니다. 커서가 변경되지 않으면 뷰를 어떻게 변경합니까? 커서를 다시 쿼리하면 문제가 해결되지만 효율적이지는 않습니다. – Emerald214

관련 문제