根据您的要求,您必须在两个 recycleview 持有者中使用 onclicklistner 并将回调传递给两个适配器。
你的回调接口是:
interface Result(){
public setposition(int position);
}
public BankAdapter(Context context,Arralist<Bank> mList,Result result){
this.context=context;
this.mList=mList;
this.result=result;
}
private final OnClickListener mOnClickListener = new MyOnClickListener();
@Override
public MyViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.myview, parent, false);
view.setOnClickListener(mOnClickListener);
return new MyViewHolder(view);
}
The onClick method:
@Override
public void onClick(final View view) {
int itemPosition = mRecyclerView.getChildLayoutPosition(view);
result.setposition(itemPosition);
}
在您的主要活动中:
private int selectedBank= -1;
private BankAdapter bankAdapter;
private ColorAdapter colorAdapter;
bankAdapter=new BankAdapter(this, listBank, new Result(){
@Override
public void onClick(,int position) {
selectedBank=position;
}
});
bankRecyleView.setAdapter(bankAdapter);
在您的 ColorReycleView 适配器中使用相同的代码来检测项目点击:
colorAdapter=new ColorAdapter(this, listColor, new Result(){
@Override
public void onClick(View v,int position) {
if(selectedBank==-1)
{
Toast.makeText(this, "Select bank first", Toast.LENGTH_LONG).show();
}
else{
//// Do your code here
/* here you get your color postion selected
remove item from bank list and change with selected color image as per your list
listBank.add(selectedBank,"changed color image");
bankAdapter.notifyItemChanged();
*/
}
}
});
colorRecyleView.setAdapter();
希望对你有帮助。