2015-08-01 2 views
0

Я делаю приложение для Android, в котором я создал пользовательский адаптер для списка, в котором у меня установлен флажок, когда я снял флажок и возвращаюсь к предыдущему фрагменту, а затем снова открываю фрагмент, все эти флажки checked.How преодолеть эту ситуациюКак установить состояние флажка в android

Вот мой код Java

ArrayList<Boolean> checked_list; 

    public SettingsAdapter(Context context, int resource, RateItem[] objects) { 
     super(context, resource, objects); 
     checked_list=new ArrayList<Boolean>(); 
     for(int i=0;i<this.getCount();i++){ 
      checked_list.add(i,true); 
     } 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     if(convertView==null){ 
      LayoutInflater inflater=(LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView=inflater.inflate(R.layout.settings_single,null); 
     } 

     ImageView img= (ImageView) convertView.findViewById(R.id.imageView); 
     TextView title_txt= (TextView) convertView.findViewById(R.id.textViewtitle); 
     TextView subtitle_txt= (TextView) convertView.findViewById(R.id.textViewsubtitle); 
     final CheckBox checkBox= (CheckBox) convertView.findViewById(R.id.checkBoxselected); 


     img.setImageResource(R.drawable.australia); 
     title_txt.setText(settings_array[position].title_rate); 
     subtitle_txt.setText(settings_array[position].subtitle_rate); 

     checkBox.setChecked(checked_list.get(position)); 

     checkBox.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(!checkBox.isChecked()){ 
         Set<RateItem> asSet = new HashSet<RateItem>(Arrays.asList(FragmentRateActivity.rate_array)); 
         asSet.remove(FragmentRateActivity.rate_array[position]); 
         FragmentRateActivity.rate_array = asSet.toArray(new RateItem[]{}); 
         checked_list.set(position,false); 
        } 
       else { 

         /*Set<RateItem> asSet = new HashSet<RateItem>(Arrays.asList(FragmentRateActivity.rate_array)); 
         asSet.remove(FragmentRateActivity.rate_array[position]); 
         FragmentRateActivity.rate_array = asSet.toArray(new RateItem[]{});*/ 
         checked_list.set(position,true); 
       } 

      } 
     }); 

     return convertView; 
    } 

ответ

0

Использование checkBox.setOnCheckedChangeListener вместо checkBox.setOnClickListener. вы устанавливаете все checked_list в true в своем конструкторе

Смежные вопросы