2013-06-26 2 views
0

목록보기에서 확인란 상태를 유지하는 데 문제가 있습니다. 나는이 문제에 관한 많은 stackoverflow 질문을 시도했다. 그러나 couldnt는 어떤 해결책을 아직 발견한다. 제발 누군가 도와주세요. 내 사용자 지정 어댑터에서 내 getView 메서드는 다음과 같습니다.목록보기의 확인란 상태 유지

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 



     View rowView = inflater.inflate(R.layout.row_sub_packages, parent, 
       false); 

     TextView title = (TextView) rowView.findViewById(R.id.textView1); 

     TextView desc = (TextView) rowView.findViewById(R.id.textView2); 

     TextView sub = (TextView) rowView.findViewById(R.id.TextView01); 
     TextView book = (Button) rowView.findViewById(R.id.button2); 

     CheckBox fav = (CheckBox) rowView.findViewById(R.id.check1); 

     Flag.clear(); 
     Flag = dh.getData(6, "packages"); 

     boolean flag = false; 

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

      if (Flag.get(i) 
        .equals(SubPackagesFragment.Sub_cat_Id[position])) { 

       Log.i("Flag true", "Flag true " + Flag.get(i) + " " 
         + SubPackagesFragment.Sub_cat_Id[position]); 

       flag = true; 
      } 

      else { 
       flag = false; 
      } 

     } 

     if (flag == true) { 
      fav.setChecked(true); 
     } 

     else { 
      fav.setChecked(false); 
     } 

     fav.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, 
        boolean isChecked) { 
       // TODO Auto-generated method stub 

       if (isChecked == true) { 

        dh.addfav(Title[position], sub_cat_Sub[position], 
          sub_cat_des[position], Images[position], 
          "packages", 
          SubPackagesFragment.Sub_cat_Id[position]); 

        // Toast.makeText(getContext(), 
        // Title[position]+"+"+SubPackagesFragment.Sub_cat_Id[position], 
        // Toast.LENGTH_SHORT).show(); 

       } else { 
        // Toast.makeText(getContext(), "off", 
        // Toast.LENGTH_SHORT).show(); 

        dh.delete(SubPackagesFragment.Sub_cat_Id[position], 
          "packages"); 

       } 

      } 
     }); 


     title.setText(Title[position]); 




     return rowView; 

} 
+0

http://stackoverflow.com/questions/17267859/how-to-obtain-the-checked-rows-in-a-custom-view-list/17268392#17268392 'SparseBooleanArray'를 사용하여 이것을 시도하십시오. 또는 이것 http://stackoverflow.com/questions/17234399/in-gridview-checkbox-is-unchecked-while-scrolling-gridview-up-and-down/17234461#17234461 – Raghunandan

답변

1

당신은 ArrayList 통해 반복하고, 당신이 여전히 반복하고 true 문 끝에 아니었다면 false을 검출한다 true을 감지 할 때 문제입니다. 따라서 true을 발견 한 후에 break;을 설정하십시오.

+0

그게 효과가! 고마워요 :) –

+0

아니 probz 친구, 당신을 도운다면 대답을 받아들입니다! 건배! – Carnal

관련 문제