2017-05-01 27 views
-1

recyclerviewアイテムのうち、1つだけを選択して背景を白にし、前のものを選択解除する必要があります。Recyclerviewで1つのイメージのみを選択してください

public class viewHolder extends RecyclerView.ViewHolder { 

     TextView periodCategoryName; 
     ImageView periodCategoryPhoto; 
     View dottedLine; 

     public viewHolder(View itemView) { 
      super(itemView); 

      periodCategoryPhoto=(ImageView) itemView.findViewById(R.id.mood_icon); 

      periodCategoryPhoto.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        Log.i("Get Adapeter position ",Integer.toString(getAdapterPosition())); 

        selectedPosition=getAdapterPosition(); 
        notifyItemRangeChanged(0,periodListPhoto.size()-1); 
       } 
      }); 

     } 
    } 
@Override 
    public void onBindViewHolder(final PeriodListAdaptor.viewHolder holder, final int position) { 

    holder.periodCategoryPhoto.setImageResource(periodListPhoto.get(position)); 


     //only one period item is highlighted 
     if(selectedPosition == position){ 
      //already selected item 
      Log.i("Selected position is ",Integer.toString(selectedPosition)); 
      holder.periodCategoryPhoto.setBackground(ContextCompat.getDrawable(mContext,R.drawable.item_selected)); 
     }else{ 
      //do nothing 
     } 



    } 

私は奇妙な動作をしています。新しいアイテムを選択すると、以前に選択されたアイテムが選択解除されることがあります。両方が選択されることもあります。

答えて

0

ViewHolder sがあなたのonBindViewHolder()で両方のケースを扱うの世話をする必要があることを意味し、再利用されています:

if (selectedPosition == position) { 
    ... 
} else { 
    holder.periodCategoryPhoto.setBackground(defaultBagroundColor); 
} 
関連する問題