2012-10-12 6 views
1

각 행의 체크 박스가있는 목록보기가 있습니다. 내가 체크 체크 박스를 얻으려고 할 때 다음과 같이목록보기에서 선택한 확인란을 찾는 방법은 무엇입니까?

View view = convertView; 
     if(view == null) { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(R.layout.setting_list_item, null); 

      ViewHolder viewHolder = new ViewHolder(); 
      viewHolder.cbCat = (CheckBox) view.findViewById(R.id.cbCat); 

      view.setTag(viewHolder); 
     } 
     ViewHolder vh = (ViewHolder) view.getTag(); 
     vh.cbCat.setText(bt.getName()); 

을 :하지만 나는이 같은 목록을로드 할 viewholder 패턴을 사용하고

for(int i = lvCatList.getFirstVisiblePosition(); i < settingAdapter.getCount(); i++) { 
      View v = lvCatList.getChildAt(i); 
      CheckBox cbx = (CheckBox) v.findViewById(R.id.cbCat); 

      if(cbx != null && cbx.isChecked()) { 
       toast += "/" + settingAdapter.getItem(i).getName(); 
       Log.d("CHECKED", toast); 
      } 

만 볼 확인란을 얻을 수 있습니다. 그리고 체크 박스가 화면에 보이지 않으면 예외를 던집니다.

목록에있는 첵크 박스가 선택되었는지 확인하는 방법.

+1

부울을 정의하고 그 결과에서 그것을 채울 참조 선택되어 있는지 여부를 확인해야 할 경우 당신은 체크 박스

List<String> SelectedBox = new ArrayList<String>(); View.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked) { SelectedBox.add(id); } else { SelectedBox.remove(id); } } }); 

에 검사 할 때 ArrayList를 선택 체크 박스 값을 추가 할 수 있습니다 cbx.Checked? – Rexxo

+0

@Rexxo 당신은 당신의 제안을 자세히 설명 할 수 있습니까? 화면에 표시되지 않는 목록 항목에서 예외가 발생하기 때문에 –

+0

@Harish의 링크가 좋다. For 루프가 무엇보다 중요합니까? cbx! = null을 제거하십시오. – Rexxo

답변

2

당신이 체크 박스가 단지 SelectedBox이

관련 문제