相关疑难解决方法(0)

RecyclerView中的单一选择

我知道在recyclerview类中没有默认的选择方法,但是我试过以下方式,

public void onBindViewHolder(ViewHolder holder, final int position) {
    holder.mTextView.setText(fonts.get(position).getName());
    holder.checkBox.setChecked(fonts.get(position).isSelected());

    holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked) {
                for (int i = 0; i < fonts.size(); i++) {
                    fonts.get(i).setSelected(false);
                }
                fonts.get(position).setSelected(isChecked);
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

尝试这段代码时,我得到了预期的输出,但完全没有.

我将用图像解释这个.

默认情况下,从我的适配器中选择第一个项目

在此输入图像描述

然后我试图选择第二个然后是第三个,然后是第四个,最后是第五个,

在此输入图像描述

这里仅应选择第5个,但所有5个都被选中.

如果我将列表滚动到底部并再次返回顶部,

在此输入图像描述

我得到了我的预期,

我怎样才能克服这个问题?还有一段时间如果我快速滚动列表,其他一些项目就会被选中.如何克服这个问题呢?

更新

notifyDataSetChanged()fonts.get(position).setSelected(isChecked);我得到以下异常后,我正在尝试使用

java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling
        at android.support.v7.widget.RecyclerView.assertNotInLayoutOrScroll(RecyclerView.java:1462)
        at android.support.v7.widget.RecyclerView$RecyclerViewDataObserver.onChanged(RecyclerView.java:2982)
        at android.support.v7.widget.RecyclerView$AdapterDataObservable.notifyChanged(RecyclerView.java:7493)
        at android.support.v7.widget.RecyclerView$Adapter.notifyDataSetChanged(RecyclerView.java:4338)
        at com.app.myapp.screens.RecycleAdapter.onRowSelect(RecycleAdapter.java:111)
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

60
推荐指数
7
解决办法
8万
查看次数

如何在recyclerView中实现复选框?

我有一个用于 recyclerview 的适配器。我从我的活动传递数组列表的地方,比如数据是具有一些数据的 ArrayList。

 AlternativeAdapter alternativeAdapter= new AlternativeAdapter(AlternativeActivity.this, data);

    recyclerView.setAdapter(alternativeAdapter);
Run Code Online (Sandbox Code Playgroud)

在 AlternativeAdapter 类中,我有一个文本视图和复选框。我可以用复选框显示所有文本项。

在 AlternativeAdapter 类中

public class AlternativeCurrencyAdapter extends RecyclerView.Adapter<AlternativeCurrencyAdapter.ViewHolder>{

 ArrayList<String> currencyListArray;
    Context context;
    View view1;
    ViewHolder viewHolder1;
    TextView textView;
    private int selectedPosition = -1;// no selection by default
    public AlternativeCurrencyAdapter(Context context1, ArrayList<String> currencyListArray){

        this.currencyListArray = currencyListArray;
        context = context1;
    }    
    public  class ViewHolder extends RecyclerView.ViewHolder{

        public TextView username;
        public CheckBox chkSelected;
        public ViewHolder(View v){
            super(v);
            username = (TextView)v.findViewById(R.id.username);
            chkSelected = (CheckBox) v.findViewById(R.id.chkSelected);
            itemView.setOnClickListener(new View.OnClickListener(){
                @Override
                public …
Run Code Online (Sandbox Code Playgroud)

checkbox android android-recyclerview

5
推荐指数
1
解决办法
5450
查看次数

标签 统计

android ×2

android-recyclerview ×2

checkbox ×1