2012-05-18 1 views
1

을 변경하지 않습니다 다음 ListView에 바인딩확인란 나는이 상태를

public class MyList extends ListActivity { 
    SimpleAdapter simpleAdapter; 

에 의해 수행되는 ViewBinder :

내 XML은 다음과 같습니다
simpleAdapter = new SimpleAdapter(this, getData(path), 
      R.layout.menu_row, new String[] { 
     ..., "checked" }, new int[] {..., R.id.checkBox1 }); 

    SimpleAdapter.ViewBinder viewBinder = new SimpleAdapter.ViewBinder() { 
     @Override 
     public boolean setViewValue(View view, Object data, 
       String textRepresentation) { 
      if (view.getId() == R.id.checkBox1) { 
           CheckBox checkBox = (CheckBox) view; 
       checkBox.setChecked(Boolean.parseBoolean((String) data)); 

clickablefocusable이 행 것으로하는 데 도움이 하나처럼 보입니다.

<CheckBox 
    android:id="@+id/checkBox1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:focusable="false" 
    android:clickable="false" 
    android:focusableInTouchMode="false" 
    /> 

는 또한 가지고 :

클릭 이벤트와 상호 작용
protected void onListItemClick(ListView l, View v, int position, long id) { 

. 지금까지 좋은 작품, 내 문제는 행을 클릭하면 CheckBox는 시각 상태를 변경하지 않습니다. 내가 무엇을 할 수 있을지?

답변

0

변경하는 CheckedTextView 생각 앞으로 setChecked를 사용하여).

수정

잘 모르겠다. 어댑터에 데이터 세트가 변경되었다고 말했습니까?

+0

버튼이 누구입니까? 는 \t는 보호 내가 무엇을 무효 onListItemClick (ListView에 리터,보기 V, INT 위치, 긴 ID를) { \t \t \t CheckBox의 체크 박스 = (CheckBox의) v.findViewById (R.id.checkBox1); checkbox.setChecked (! checkbox.isChecked()); 효과가 표시되지 않습니다. – user1324936

+1

죄송합니다. 확인란입니다. 그래픽이 아닐지라도 상태가 변하고 있는지 확인할 수 있습니까? 당신은 notifyDatasetChanged을 시도 했습니까 (제 생각에 나는 그걸 가지고 있다고 생각합니다. 제 전화와 리소스에서 멀리 떨어져 있습니다) – Barak

+0

예 simpleAdapter.notifyDataSetChanged();를 호출합니다. 이 문제였습니다. 즉, 확인란의 변경 사항을 알지 못하는 getData 메서드를 호출합니다. 나는 당신의 생각이 나를 잘못 지적했기 때문에 그것을 주석 처리했다. – user1324936

1

나는 당신이 보길 원하는 것은 체크 박스를 표시하고 목록 항목을 클릭 할 때 체크 상자가 onListItemClick있어에서 button.setChecked(true)을 넣어 (또는 코드가 다시 전환하고

+0

아니요. 원하지 않습니다. 내 레이아웃은 훨씬 더 복잡하고 큰 변화가 필요 없습니다. 내 느낌은 내 문제를 해결하는 작은 설정이 있다고 말합니다 – user1324936