我在RecyclerView中有一个CardView项目列表。我需要将RecyclerView绑定到CardView Click上的子项列表。这样我就可以使用相同的RecyclerView来显示子项。有什么方法可以做到吗?
public static class BoxViewHolder extends RecyclerView.ViewHolder {
CardView cv;
TextView boxID;
TextView boxTitle;
TextView boxDescription;
BoxViewHolder(View itemView) {
super(itemView);
cv = (CardView)itemView.findViewById(R.id.mycard);
boxID = (TextView)itemView.findViewById(R.id.box_id);
boxTitle = (TextView)itemView.findViewById(R.id.box_title);
boxDescription = (TextView)itemView.findViewById(R.id.box_description);
itemView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
// view.getParent()
/* What to do ??? */
}
});
}
}
答案 0 :(得分:1)
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (mClickListener != null)
mClickListener.onItemClick(view, getAdapterPosition());
}
}
侦听器是自定义的,就像在适配器类中实例化的那样
public void setClickListener(AdapterClass.ItemClickListener itemClickListener) {
this.mClickListener = itemClickListener;
}
// parent activity will implement this method to respond to click events
public interface ItemClickListener {
void onItemClick(View view, int position);
}
当你在Fragment / Activity中简单地实现适配器时,你也设置了这个监听器
adapter.setClickListener(new AdapterClass.ItemClickListener() {
@Override
public void onItemClick(View view, int position) {
// change your data based on position clicked and call notifyDataSetChanged (after you made any data changes ofc)
adapter.notifyDataSetChanged();
}
});