使用滚动RecycleAdapter重复元素上的背景并滚动

洛伦佐·贝蒂(LorenzoBerti)

我有customrecycleAdapter,当我单击元素时,我会更改行的颜色,但是如果我滚动查看背景更改位置或出现在其他元素上。我已经阅读过Receycle的观点,但是,解决此问题的方法是什么?

我的适配器是:

public class CustomRecycleAdapter extends RecyclerView.Adapter<CustomRecycleAdapter.ViewHolder> {
    private JSONArray dataSource;
    private AdapterCallback mAdapterCallback;
    public static SparseBooleanArray selectedItems;

    public CustomRecycleAdapter(JSONArray dataArgs, Context context){
        dataSource = dataArgs;
        this.mAdapterCallback = ((AdapterCallback) context);


    }



    public static interface AdapterCallback {
        void onMethodCallback(View caller, JSONObject obj, JSONArray data, int position);
    }


    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // create a new view
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.list_view_activities, parent, false);

        ViewHolder viewHolder = new ViewHolder(view,  new CustomRecycleAdapter.ViewHolder.IMyViewHolderClicks() {
            public void onClick(View caller, int position) {
                try {

                    JSONObject itemClicked = dataSource.getJSONObject(position);
                    mAdapterCallback.onMethodCallback(caller, itemClicked, dataSource, position);
//                    Log.e("clicked", itemClicked.toString());

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            };
        });

        return viewHolder;

    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        try {

            JSONObject object =  dataSource.getJSONObject(position);
            holder.textView.setText(object.getString("description"));





        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
    @Override
    public int getItemCount() {
        return dataSource.length();
    }

    public JSONObject getItem(int position) throws JSONException {
        return dataSource.getJSONObject(position);
    }

    public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

        public IMyViewHolderClicks mListener;
        public TextView textView;
        public TextView hours;

        public ViewHolder(View itemView, IMyViewHolderClicks listener) {
            super(itemView);
            mListener = listener;
            textView = (TextView) itemView.findViewById(R.id.activity);
            hours = (TextView) itemView.findViewById(R.id.hours);
            itemView.setOnClickListener(this);

        }


        @Override
        public void onClick(View v) {
            int position  = getAdapterPosition();
            Log.e("RecycleAdapterPosition", String.valueOf(getAdapterPosition()));
//            mListener.onClick(v, position);
            v.setBackgroundColor(Color.GREEN);
            v.setSelected(true);


        }
        public interface IMyViewHolderClicks {


            public void onClick(View caller, int position);
        }
    }




}

因此,我单击了element,然后正确设置了setBackground,但是如果滚动,则会看到另一个设置了背景的元素,并且如果向上滚动我选择的元素,则没有背景。

米格尔·贝尼特斯(Miguel Benitez)

RecyclerView重用视图来绘制将要显示的列表的下一个元素,因此该视图集具有新数据,但继续具有旧样式,因为您会看到列表中的其他元素具有新颜色。

您应该创建一个数组,存储是否检查此元素,然后检查是否在onBindViewHolder()调用时检查了该元素

@Override
public void onBindViewHolder(final YourViewHolder holder, final int position) {

    if(checked[position]){
        //YourViewHolder change colour

    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用滚动RecycleAdapter重复元素上的背景并滚动

来自分类Dev

CSS-Bug导致滚动时重复元素

来自分类Dev

使用滚动更改元素的背景

来自分类Dev

使用溢出的元素:滚动使滚动条不在屏幕上

来自分类Dev

在固定元素上滚动元素

来自分类Dev

在AngularJS网页中滚动后如何修复元素

来自分类Dev

滚动到按键上的元素

来自分类Dev

如何删除在powershell脚本中使用foreach添加的哈希表上的重复元素?

来自分类Dev

排序重复元素

来自分类Dev

HTML元素背景水平滚动错误

来自分类Dev

在列表中的重复元素上添加空格

来自分类Dev

重复元素上的Orbeon Form Builder验证约束

来自分类常见问题

使用webdriver滚动到元素?

来自分类Dev

网页上无限滚动重复无限文本

来自分类Dev

在滚动UITableView上重复UIFont和UIColor

来自分类Dev

在Firefox上的滚动事件上移动元素

来自分类Dev

在滚动javascript上更改多个图像背景

来自分类Dev

滚动时仅元素上的部分背景颜色宽于窗口宽度

来自分类Dev

使用array.reduce方法计算重复元素

来自分类Dev

使用Swift在数组中查找重复元素

来自分类Dev

使用XQuery计算序列中的连续重复元素

来自分类Dev

如何使用R计算向量中的重复元素

来自分类Dev

使用重复元素进行全置换的非递归算法?

来自分类Dev

如何使用XSLT 1.0计算重复元素的总和

来自分类Dev

使用 IEnumerable 初始化的 HashSet 包含重复元素

来自分类Dev

数组推送,重复元素

来自分类Dev

检测重复元素python

来自分类Dev

向量中的重复元素

来自分类Dev

Python删除重复元素