2011-09-23 1 views
0
ListView ListView를 사용하고 있습니다 :

ListView 항목의 ViewBinder setViewValue가 여러 개의 CheckBox를 확인합니다.

  1. 목록 항목 클릭
  2. CheckBox

view.setTag(cursor.getPosition())view.setTag(cursor.getPosition())를 사용하여 cursorPosition을 저장할 수 있으며 체크 된 항목에 대해 필요한 조치를 취할 수 있습니다. 아래로 스크롤하면 여러 다른 CheckBoxes가 확인 된 것을 볼 수 있습니다 (시각적 인 경우 만 해당). 해결 방법으로 CheckedBox 뷰 ID를 목록에 저장 한 다음 CheckBox이 선택되어 있는지 확인하기 위해 뷰 설명을 설정해 보았습니다. 그러나보기가 아래로 스크롤 될 때보기가 재사용되는 것처럼 보입니다 (동일한보기 ID).

실제 검사 된 CheckBoxes 만 표시하려면 어떻게해야합니까? 코드 :

public class MyViewBinder implements ViewBinder { 
public boolean setViewValue(View view, final Cursor cursor, int columnIndex) { 
     int viewId = view.getId(); 
     switch (viewId) { 
      case R.id.checkbox: 
      view.setTag(cursor.getPosition()); 
      return true; 

      case R.id..... 
      ....... 
     } 

다음 용도로 사용 :

mySimpleCursorAdapter.setViewBinder (myViewBinder);

+0

ViewHolder 패턴을 사용하고 있습니까? 일부 코드는 도움이 될 것입니다 :) – Noel

+0

코드가 추가되었습니다. 이 뷰 바인더는 설명 된대로 사용됩니다. – Taranfx

답변

0

나는 ViewBinder 인터페이스가 너무 많은 경험이없는하지만 당신은 목록보기 (API reference)에 setChoiceMode()를 사용하여 고려 했는가? 당신은 CHOICE_MODE_MULTIPLE으로 설정하여 안드로이드가 체크 박스를 추가합니다. 이 방법으로 점검 된 항목을 유지하는 것에 대해 걱정할 필요는 없습니다.

API Demo example.

+0

CheckedTextView에만 해당합니다. 사용하지 않습니다. 내 사용자 정의 toggleButton을 사용하고 있습니다. CheckedTextView의보기는 꽤 복잡합니다. – Taranfx

관련 문제