2013-06-15 2 views
0

목록보기에 simple_multiple_listitem보기와 같은 일부 확인란이 있습니다. 나는이 목록의 로딩에 내 목록보기ICS에서 체크 박스를 선택하면 Listview 안드로이드 체크 박스에 false가 표시됩니까?

listView.setAdapter(new ArrayAdapter<String>(
          getApplicationContext(), 
          android.R.layout.simple_list_item_multiple_choice, 
          subcatNamesList)); 

를 초기화하고 방법이 내가도의 상태를 얻을 필요가 코드

for (int i = 0; i < subCatArrayLlist.size(); i++) { 

         for (int j = 0; j < selectedItemsList.size(); j++) { 
          if (subCatArrayLlist.get(i).getSubCatSrNo() 
            .contains(selectedItemsList.get(j))) { 
           listView.setItemChecked(i, true); 
          } 


         } 

이하로 사용하여 나는이 작업을 수행 한 선택 일부 확인란을 보여줄 필요가있다 확인란을 선택하거나 선택을 취소 할 때 확인란을 선택하면 jellybeans에서 완벽하게 작동하는 코드를 작성합니다. 확인란을 선택하면 선택 취소시 true 및 false가 표시됩니다. 그러나 ICS에서 이것이 왜 이렇게 일어나고 있는지 나는 완전히 반대되는 모습을 보이고 있습니다. 제 문제에 관해서는이 부분을 정말로 고집합니다. 다음은 선택 및 선택 취소를 위해 사용하고있는 mcode입니다.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
         @Override 
         public void onItemClick(AdapterView<?> arg0, View arg1, 
           int pos, long arg3) { 
          System.out.println("Get item at position= " 
            + listView.getChildAt(pos)); 

          // selectedItemsList.add(subCatArrayLlist.get(pos) 
          // .getSubCatSrNo()); 

          CheckedTextView ctv = (CheckedTextView) arg1 
            .findViewById(android.R.id.text1); 

          System.out.println("State of check Box= " 
            + ctv.isChecked()); 


          if (ctv.isChecked() == true) { 
           selectedItemsList.add(subCatArrayLlist.get(pos) 
             .getSubCatSrNo()); 
           Toast.makeText(context, "Cat Selected", 
             Toast.LENGTH_LONG).show(); 
          } 
          if (ctv.isChecked() == false) { 
           selectedItemsList.remove(subCatArrayLlist.get(
             pos).getSubCatSrNo()); 

           Toast.makeText(context, "Cat DeSelected", 
             Toast.LENGTH_LONG).show(); 
          } 
         } 
        }); 

답변

0

ICS에서이를 확인하지 않았지만 액티비티에서 onCheckChange를 구현할 수 있습니다. 이렇게하면 어댑터를 사용하여 항목을 가져온 다음 목록을 편집 할 필요가 없습니다. 샘플 코드 :

@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

     int pos = mMainListView.getPositionForView(buttonView); 

     if (pos != ListView.INVALID_POSITION) { 
      String item = mAllItems.get(pos);   

      if (isChecked) { 
       mSelectedItems.add(item); 
      } else { 
       mSelectedItems.remove(item); 
      } 
     } 
} 
관련 문제