Skip to content Skip to sidebar Skip to footer

Recycler View Wrongly Selecting View Item While Performing Multi-select

I have implemented an recycler view with Multi Select successfully using addOnItemTouchListener for identifying and selecting using single and double click.When i have Less than 5

Solution 1:

add boolena array

boolean [] itemcheck;

initialize in constructor wit your arraylist.

itemcheck = new boolean[feedItemList.size()];

check in bindview holder like this

if(itemcheck[position]==true){ 
    holder.row_linearlayout.setBackgroundColor(Color.parseColor("#b7c5ea"));
        }else {
            holder.row_linearlayout.setBackgroundColor(0xFFFFFFFF);
            //holder.row_linearlayout.setBackgroundResource(R.drawable.blurback);
        }

and set ture or false onclick of your relativelayout controle instead of any other controle .

 holder.row_linearlayout.setOnClickListener(newView.OnClickListener() {
                @OverridepublicvoidonClick(View v) {
                    LinearLayoutLout= (LinearLayout) v.findViewById(R.id.selectlinear);
                    if(model.isSelected()){
                        Lout.setBackgroundColor(0xFFFFFFFF);
                        itemcheck[position]=false;
                        //get all other controle value here
                    }else{

                        Lout.setBackgroundColor(Color.parseColor("#b7c5ea"));
                        itemcheck[position]=true;     
                      //get all other controle value here                  
                    }
                }
            });

Solution 2:

You are doing most of the view manipulation in Onclick listener, you should move that to you adapter onBindView, because even if you set in Onclick listener, it will modify when user scroll.

I am not giving complete view manipulation, I am just giving the hint how we should do.

@OverridepublicvoidonBindViewHolder(final ContactHolder holder, int position) {
    pos = position;
    finalContactcontact= contactList.get(pos);

    holder.colg.setText(contact.getColg());
    holder.name.setText(contact.getName());
    holder.job.setText(contact.getJob());


    if (contact.getImage() != null)
        holder.img.setImageBitmap(Utility.getPhoto(contact.getImage()));


    if (multiselect_list.contains(contactArrayList.get(position))) { // May be you should check form your fragment or actvity using listeners
        holder.mentee.setBackgroundColor(ContextCompat.getColor(ContactsActivity.this, R.color.colorPrimary));
        holder.participant.setBackgroundColor(ContextCompat.getColor(ContactsActivity.this, R.color.colorPrimary));

        holder.mentee.setVisibility(View.VISIBLE);
        holder.participant.setVisibility(View.VISIBLE);
    } else {

        holder.mentee.setVisibility(View.GONE);
        holder.participant.setVisibility(View.GONE);
    }

}

Post a Comment for "Recycler View Wrongly Selecting View Item While Performing Multi-select"