我通常在活动或片段中保存对适配器的引用。 ViewHolders可以作为Adapter中的内部类或者作为独立包中的类来放置。您可以使用一个界面与视图持有者进行交互。你只需要在你的活动或片段中实现它。例如:
public class MyAdapter extends RecyclerView.Adapter<VH> {
private MyInterface mInterface;
public MyAdapter(MyInterface i) {
mInterface = i;
}
//... some code to create view holders
//binding
@Override
protected void onBindItemViewHolder(ViewHolder viewHolder, final int position, int type) {
viewHolder.bindView(position, mInterface); //call methods of interface in bindView() methods of your viewHolders
}
interface MyInterface {
void someEvent();
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView mText;
ViewHolder(View root) {
super(root);
mText = (TextView)root.findViewById(R.id.text)
}
void bindView(int pos, MyAdapter.MyInterface myInterface) {
mText.setOnClickListener(v -> myInterface.someEvent());
//...some other code
}
}
在活动或片段
而且地方:
final MyAdapter adapter = new MyAdapter(new MyAdapter.MyInterface() {
@Override
public void someEvent() {
adapter.notifyDataSetChanged();
}
});
你也可以使用数据绑定。 – BlackHatSamurai