簡體   English   中英

recyclerview 中的錯誤項目更改

[英]wrong item changes in recyclerview

大家好,我遇到了這個問題,需要幫助:

每個項目都有一個CheckBox ,我在RecyclerView為我的項目的根元素設置了setOnLongClickListener ,如下所示:

    holder.faviorateVideoItemRelative.setOnLongClickListener(new View.OnLongClickListener() {
        public boolean onLongClick(View arg0) {


            if (chk_visible)
            {
                return  true ;
            }
            holder.chk_faviorateVideo.setChecked(!holder.chk_faviorateVideo.isChecked());
            chk_visible = true ;
            checkedItemsCNT = 1 ;
            deleteListVideoCourses.add(data.get(holder.getAdapterPosition())) ;
            notifyDataSetChanged() ;
            return  true ;
        }
    });

如果我向下滾動,當我長按其中一個項目時,錯誤項目的CheckBox會被檢查!

大家好,我被困在這里,需要幫助:

每個項目都有一個CheckBox ,我在RecyclerView為我的項目的根元素設置了setOnLongClickListener ,如下所示:

    holder.faviorateVideoItemRelative.setOnLongClickListener(new View.OnLongClickListener() {
        public boolean onLongClick(View arg0) {


            if (chk_visible)
            {
                return  true ;
            }
            holder.chk_faviorateVideo.setChecked(!holder.chk_faviorateVideo.isChecked());
            chk_visible = true ;
            checkedItemsCNT = 1 ;
            deleteListVideoCourses.add(data.get(holder.getAdapterPosition())) ;
            notifyDataSetChanged() ;
            return  true ;
        }
    });

如果向下滾動,當我長時間單擊其中一項時,將選中錯誤項的CheckBox

大家好,我被困在這里,需要幫助:

每個項目都有一個CheckBox ,我在RecyclerView為我的項目的根元素設置了setOnLongClickListener ,如下所示:

    holder.faviorateVideoItemRelative.setOnLongClickListener(new View.OnLongClickListener() {
        public boolean onLongClick(View arg0) {


            if (chk_visible)
            {
                return  true ;
            }
            holder.chk_faviorateVideo.setChecked(!holder.chk_faviorateVideo.isChecked());
            chk_visible = true ;
            checkedItemsCNT = 1 ;
            deleteListVideoCourses.add(data.get(holder.getAdapterPosition())) ;
            notifyDataSetChanged() ;
            return  true ;
        }
    });

如果向下滾動,當我長時間單擊其中一項時,將選中錯誤項的CheckBox

大家好,我被困在這里,需要幫助:

每個項目都有一個CheckBox ,我在RecyclerView為我的項目的根元素設置了setOnLongClickListener ,如下所示:

    holder.faviorateVideoItemRelative.setOnLongClickListener(new View.OnLongClickListener() {
        public boolean onLongClick(View arg0) {


            if (chk_visible)
            {
                return  true ;
            }
            holder.chk_faviorateVideo.setChecked(!holder.chk_faviorateVideo.isChecked());
            chk_visible = true ;
            checkedItemsCNT = 1 ;
            deleteListVideoCourses.add(data.get(holder.getAdapterPosition())) ;
            notifyDataSetChanged() ;
            return  true ;
        }
    });

如果向下滾動,當我長時間單擊其中一項時,將選中錯誤項的CheckBox

大家好,我被困在這里,需要幫助:

每個項目都有一個CheckBox ,我在RecyclerView為我的項目的根元素設置了setOnLongClickListener ,如下所示:

    holder.faviorateVideoItemRelative.setOnLongClickListener(new View.OnLongClickListener() {
        public boolean onLongClick(View arg0) {


            if (chk_visible)
            {
                return  true ;
            }
            holder.chk_faviorateVideo.setChecked(!holder.chk_faviorateVideo.isChecked());
            chk_visible = true ;
            checkedItemsCNT = 1 ;
            deleteListVideoCourses.add(data.get(holder.getAdapterPosition())) ;
            notifyDataSetChanged() ;
            return  true ;
        }
    });

如果向下滾動,當我長時間單擊其中一項時,將選中錯誤項的CheckBox

大家好,我被困在這里,需要幫助:

每個項目都有一個CheckBox ,我在RecyclerView為我的項目的根元素設置了setOnLongClickListener ,如下所示:

    holder.faviorateVideoItemRelative.setOnLongClickListener(new View.OnLongClickListener() {
        public boolean onLongClick(View arg0) {


            if (chk_visible)
            {
                return  true ;
            }
            holder.chk_faviorateVideo.setChecked(!holder.chk_faviorateVideo.isChecked());
            chk_visible = true ;
            checkedItemsCNT = 1 ;
            deleteListVideoCourses.add(data.get(holder.getAdapterPosition())) ;
            notifyDataSetChanged() ;
            return  true ;
        }
    });

如果向下滾動,當我長時間單擊其中一項時,將選中錯誤項的CheckBox

使用上述解決方案后,

以下解決方案對我來說就像一個魅力。

 @Override
public long getItemId(int position) {
    return position;
}

@Override
public int getItemViewType(int position) {
    return position;
}

當您在整個滾動過程后返回時,使用holder.setIsRecyclable(false)刪除所需的選擇。

暫無
暫無

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

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