2016-06-05 6 views
0

기본 정보와 하트 기호가있는 레이아웃이 있습니다. 사용자가 심벌 심벌을 누르면 마음이 색이 바뀌고 (회색에서 빨간색이 됨) 데이터베이스가 업데이트됩니다 (기본적으로 목록 항목의 ID를 데이터베이스에 삽입). 내가 심장 기호를 누르면 모든 것이 잘 작동합니다 (심장 색이 바뀌고 데이터베이스에 새 레코드가 삽입됩니다). 그러나 아래로 스크롤하여 다시 같은 위치 (이전에 심장 아이콘을 누른 위치)로 돌아 가면 심장 아이콘은 여전히 ​​회색으로 표시됩니다 . 당신이 심장 색상 내 데이터베이스 레코드 예상된다 당신이보고있는Android CursorAdapter 항목 저장 상태

답변

0

에 따라 볼 수

여기에 내 코드

public class MyCursorAdapter extends CursorAdapter { 
    private LayoutInflater mLayoutInflater; 
    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     return mLayoutInflater.inflate(R.layout.list_info_layout, parent, false); 
    } 

    @Override 
    public void bindView(View view, Context context, final Cursor cursor) { 
     final ImageView heartImg = (ImageView) view.findViewById(R.id.heart); 
     int typeId = cursor.getInt(1); 

     if(typeId == 0){ 
      heartImg.setImageResource(R.drawable.redHeart); 
     } else { 
      heartImg.setImageResource(R.drawable.greyHeart); 
     } 

     heartImg.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       DatabaseUpdater.getInstance(myContext).update(id); 
       // notifyDataSetChanged(); 
      } 
     }); 
    } 
} 

입니다. 커서는 이후 DB 에 대한 모든 변경 사항이 커서가 검색되지 않음을 의미하는 의도적으로 변경할 수 없습니다. 몇 가지 간단한 선택이 있습니다

  1. 다시 쿼리는
  2. 그 마음 상태 (안 커서)
  3. 사용 목록 <> 대신 커서에 대해 별도의 목록을 지속 업데이트 된 커서에 대한 데이터베이스

제 3의 옵션은 다른 복잡한 문제 (스크롤 위치, 유지 관리 등) 및 데이터베이스 액세스 문제를 피할 수 있기를 바랍니다.

관련 문제