2017-07-21 13 views
0

favアイコンのビューがあるリサイクルビューアアダプタがあります。 1つのfavアイコンを選択すると、スクロール時に複数のアイコンが選択されました。Recyclerview multiselectビューの問題

<TextView 
      android:id="@+id/tv_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Seema Gupta" 
      android:textSize="16sp" 
      android:textStyle="bold" 
      android:textColor="@color/black"/> 

     <ImageView 
      android:id="@+id/iv_favourite" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/favourite_icon" 
      android:layout_alignParentRight="true" 
      android:padding="10dp" 
      android:layout_marginRight="0dp"/> 

アダプタクラス: -

 @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.item_maid_list_row_view, parent, false); 

     return new MyViewHolder(itemView); 
    } 
@Override 
    public void onBindViewHolder(final MyViewHolder holder, final int position) { 

     if (maidLists.get(position).isFav()){ 
      holder.iv_favourite.getDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN); 
      holder.iv_favourite.setAlpha(0.7f); 
     }else { 
      holder.iv_favourite.getDrawable().setColorFilter(Color.GRAY, PorterDuff.Mode.SRC_IN); 
      holder.iv_favourite.setAlpha(0.7f); 
     } 


     holder.iv_favourite.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (maidLists.get(position).isFav()){ 
        holder.iv_favourite.getDrawable().setColorFilter(Color.GRAY, PorterDuff.Mode.SRC_IN); 
        holder.iv_favourite.setAlpha(0.7f); 
        maidLists.get(position).setFav(false); 
       }else { 
        holder.iv_favourite.getDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN); 
        holder.iv_favourite.setAlpha(0.7f); 
        maidLists.get(position).setFav(true); 
       } 
      } 
     }); 

Modelクラス: - あなたのonClick方法で

public boolean isFav() { 
    return isFav; 
} 

public void setFav(boolean fav) { 
    isFav = fav; 
} 
+0

Fを削除inalからbindViewHolder引数の位置、タグからの位置を取得 –

+0

これを試しましたか?https://stackoverflow.com/a/39245561/4665938 –

+0

私はマルチセレクションリサイクラービューで同じ種類の問題を抱えていました。私は、**。setIsRecyclable(false); **を私のViewHolderメソッドに追加し、私の問題を解決しました。試してみてください –

答えて

2

このメソッドを追加notifyItemChanged(位置)

holder.iv_favourite.setOnClickListener(new View.OnClickListener() 
{ 
     @Override 
     public void onClick(View v) { 
       if (maidLists.get(position).isFav()) 
       {       
       holder.iv_favourite.getDrawable().setColorFilter(Color.GRAY, 
        PorterDuff.Mode.SRC_IN); 
        holder.iv_favourite.setAlpha(0.7f); 
        maidLists.get(position).setFav(false); 
       } 
       else 
       { 
       holder.iv_favourite.getDrawable().setColorFilter(Color.RED, 
       PorterDuff.Mode.SRC_IN); 
       holder.iv_favourite.setAlpha(0.7f); 
       maidLists.get(position).setFav(true); 
       } 
       notifyItemChanged(position); 
    } 
}); 
+0

作業していません!まだ同じ問題を抱えている –

関連する問題