2016-06-22 9 views
3

リサイクラビューでクリックしたアイテムの画像を変更したい。今起こっていただきましたが、私は2画像は、上記のリストのランダムなアイテム位置リクリスタビューで特定の画像を変更する方法

public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.DataObjectHolder> { 

private static String LOG_TAG = "MyRecyclerViewAdapter"; 
private ArrayList<CRMbean> mDataset; 
private static MyClickListener myClickListener; 
static Context mContext; 
private List<String> mtList ; 


public MyRecyclerViewAdapter(List<String> filteredList, CRMactivity crMactivity) { 
    mtList = filteredList; 

} 

public static class DataObjectHolder extends RecyclerView.ViewHolder 
     implements View 
     .OnClickListener { 
    public static ImageView testImage; 
    TextView name; 
    TextView regId; 
    TextView roomNo; 

    public DataObjectHolder(View itemView) { 
     super(itemView); 
     name = (TextView) itemView.findViewById(R.id.name); 
     regId = (TextView)itemView.findViewById(R.id.reg_id); 
     roomNo = (TextView)itemView.findViewById(R.id.roomno); 
     testImage = (ImageView)itemView.findViewById(R.id.logo); 


     Log.i(LOG_TAG, "Adding Listener"); 
     itemView.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     myClickListener.onItemClick(getAdapterPosition(), v); 

    } 
} 
public void setOnItemClickListener(MyClickListener myClickListener) { 
    MyRecyclerViewAdapter.myClickListener = myClickListener; 
} 
public MyRecyclerViewAdapter(ArrayList<CRMbean> myDataset) { 
    mDataset = myDataset; 
} 





@Override 
public MyRecyclerViewAdapter.DataObjectHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

    View view = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.card_view_row, parent, false); 

    DataObjectHolder dataObjectHolder = new DataObjectHolder(view); 
    return dataObjectHolder; 
} 

@Override 
public void onBindViewHolder(MyRecyclerViewAdapter.DataObjectHolder holder, int position) { 
    holder.name.setText(mDataset.get(position).getName()); 
    holder.regId.setText(mDataset.get(position).getRegId()); 
    holder.roomNo.setText(mDataset.get(position).getRoomNo()); 

} 

public void addItem(CRMbean dataObj, int index) { 
    mDataset.add(index, dataObj); 
    notifyItemInserted(index); 
} 

public void deleteItem(int index) { 
    mDataset.remove(index); 
    notifyItemRemoved(index); 
} 

@Override 
public int getItemCount() { 
    return mDataset.size(); 
} 


public interface MyClickListener { 
    void onItemClick(int position, View v); 
} 

}

に変化しているアイテムをクリックした場合にはrecyclerview

((MyRecyclerViewAdapter) mAdapter).setOnItemClickListener 
      (new MyRecyclerViewAdapter.MyClickListener() { 
       @Override 
       public void onItemClick(int position, View v) { 
        Log.i(LOG_TAG, " Clicked on Item " + position); 

        MyRecyclerViewAdapter.DataObjectHolder.testImage.setImageResource(R.drawable.video_icon_fill); 
        //getInformation(position); 

       } 
      }); 

の特殊なアダプタのために上記のコードされていますOnclickListenerの場合

+0

(MyRecyclerViewAdapter.DataObjectHolder.testImage.setImageResource(R.drawable.video_icon_fillを)。 )を変更してmtList.get(postion)アイテムを変更し、アダプタのメソッドnotifydatasetchanged()を呼び出して修正します。 –

答えて

5

は、BindHolderオン

class CRMbean{ 
    public boolean isImageChanged; 
    public boolean isImageChanged() { 
     return isImageChanged; 
    } 

    public void setImageChanged(boolean imageChanged) { 
     isImageChanged = imageChanged; 
    } 
} 

これをしようと、それはのように、アダプタ上の

@Override 
public void onBindViewHolder(MyRecyclerViewAdapter.DataObjectHolder holder, int position) { 
    holder.name.setText(mDataset.get(position).getName()); 
    holder.regId.setText(mDataset.get(position).getRegId()); 
    holder.roomNo.setText(mDataset.get(position).getRoomNo()); 
if(mDataset.get(position).isImageChanged()){ 
    holder.testImage.setImageResource(R.drawable.video_icon_fill); 
}else{ 
    holder.testImage.setImageResource("You Default Image"); 
} 
} 

は、このメソッドを書くのですか

Recyleview

項目をクリックしたときに、10

(MyRecyclerViewAdapter) mAdapter).setOnItemClickListener 
      (new MyRecyclerViewAdapter.MyClickListener() { 
       @Override 
       public void onItemClick(int position, View v) { 
        Log.i(LOG_TAG, " Clicked on Item " + position); 

       MyRecyclerViewAdapter.changeImage(position); 

       } 
      }); 
1

クリックした位置のオブジェクトのイメージ値を変更し、 を呼び出します。notifyItemChanged(position)を呼び出します。また、thアダプタのBindviewholder(ViewHolder holder,position)メソッドの画像の変更。 onBindViewHolder

+0

番号。画像はまだオンの後のランダムな位置で変化しています –

+0

item2をクリックするとitem6で画像が変わります –

+0

@venkateshgowdaはこれを解決できましたか? plz reply asap –

0

は、次のコードを追加:

testImage.setTag(ホルダー)。

、その後、onClickの画像を変更するには、このコードを追加します。

​​
+0

いいえ。画像がまだランダムな位置で変化しています。 –

+0

item2をクリックすると画像がitem6で変更されます –

+0

onclick listnerをonBindViewHolderに設定します。 –

0

これを試してみてください:

@Override 
public void onBindViewHolder(MyRecyclerViewAdapter.DataObjectHolder holder,int position { 

holder.name.setText(mDataset.get(position).getName()); 
holder.regId.setText(mDataset.get(position).getRegId()); 
holder.roomNo.setText(mDataset.get(position).getRoomNo()); 
holder.testImage = (ImageView)itemView.findViewById(R.id.log) 
holder.testImage.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) { 
     name.setImageResource(Anything you want); 


} 
関連する問題