4

제 애플리케이션에서 여러 개의 확인란을 사용하여 목록을 만들려고했습니다.안드로이드리스트 뷰에서 모든 체크 박스를 선택하십시오.

나는 ListViewandroid.R.layout.simple_list_item_multiple_choice과 함께 ListView을 선택했습니다.

, XML로 내 ListView에 ..

<ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="468dp" 
     android:choiceMode="multipleChoice" 
     android:divider="#b5b5b5" 
     android:dividerHeight="1dp" > 

및 I/선택 해제하는 CheckBox를 사용하는 모든과 ListView

<CheckBox 
      android:id="@+id/select_all" 
      android:layout_width="120dp" 
      android:layout_height="wrap_content" 
      android:layout_column="2" 
      android:textSize="18dp" 
      android:text="Select all" /> 

및 자바 코드에서 CheckBox ..

selectall.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      int size = 0; 
      boolean isChecked = selectall.isChecked(); 
      if (isChecked == true) { 
       size = getListView().getCount(); 
       for (int i = 0; i <= size; i++) 
        l1.setItemChecked(i, true); 
      } else if(isChecked==false) 
      { 
       size = getListView().getCount(); 
       for (int i = 0; i <= size; i++) 
        l1.setItemChecked(i, false); 
      } 
     } 
    }); 

여기에 l1이 내로 지정되었습니다.. 이제는 Select All (모두 선택) 확인란이 매우 잘 작동하여 ListView의 모든 확인란을 선택/선택 취소하십시오.

그러나, 나는 모든 확인란의하지 않은 검사 ..

그리고 난이 목록에있는 모든 확인란을 선택하면 수동으로 선택 모든 CheckBox 요구를 의미한다을 선택 클릭 한 후 항목 중 하나를 선택 해제하는 경우 자동으로 선택에 ..

나는 .. ListAdapter

ArrayAdapter<String> adapter1 = new ArrayAdapter<String> 
     (this,Android.R.layout.simple_list_item_multiple_choice,list); 
    setListAdapter(adapter1); 
    l1=getListView(); 

나는이 솔루션을 달성하기 위해 노력하고있어에 대해 다음 코드를 사용

+0

이 확인란 변경 이벤트를 수신하는 데 도움 희망 (같은 논리의 선택을 취소 간다) 목록 내의 텍스트 상자 – Triode

+0

목록의 확인란을 어떻게들을 수 있습니까? – MGR

+0

목록에있는 체크 박스에 대한 클릭 수신기를 추가하십시오. – Triode

답변

1

HashMap 또는 theObjectRow의 목록을 사용하여 sheckbox가 부울로 선택되었는지 추적 할 수 있습니다.

checkAll을 클릭하면 목록의 모든 부울이 true로 업데이트되고 yourAdapter.notifyDataSetChanged();

물론 어댑터 (baseadapter)에서는 GetView의 HashMap/List를 사용하여 셀을 초기화합니다. 모든 확인란이 선택 될 것이다, 그래서

if(list.get(position).isChecked()){ 
    cellHolder.checkBox.setChecked(true); 
} 
else{ 
    cellHolder.checkBox.setChecked(false); 
} 

모든 부울

사실에있다

그것이 행운

관련 문제