簡體   English   中英

如何在Android中設置復選框狀態

[英]How to set checkbox state in android

我正在制作一個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;
    }

使用checkBox.setOnCheckedChangeListener而不是checkBox.setOnClickListener。 您正在將所有checked_list設置為true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM