我对片段中的项目进行了根再循环查看。单击recyclelerview中的每个项目,它会使用与根再循环视图相同的适配器生成动态回收站视图列表。我想为子recyclelerview实现OnClick监听器,并使用第二级recyclelerview生成下一级别的项目。我找了很多答案,但我找到的是为根项目实现的点击监听器。我在我的适配器中的viewholder中实现了我的监听器。
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder>{
private Context context;
private List<ItemgroupDb> itemgroupDbs;
private ItemgroupDb PItemID;
private RecyclerViewClickListener itemListener;
public ItemAdapter(Context context, List<ItemgroupDb> itemgroupDbs, RecyclerViewClickListener itemListener) {
this.context = context;
this.itemgroupDbs = itemgroupDbs;
this.itemListener = itemListener;
}
public ItemAdapter(Context context, List<ItemgroupDb> itemgroupDbs) {
this.context = context;
this.itemgroupDbs = itemgroupDbs;
}
public ItemAdapter(Context context, List<ItemgroupDb> itemgroupDbs, ItemgroupDb PItemID, RecyclerViewClickListener itemListener) {
this.context = context;
this.itemgroupDbs = itemgroupDbs;
this.PItemID = PItemID;
this.itemListener = itemListener;
}
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
@Override
public int getItemCount() {
return itemgroupDbs.size();
}
@Override
public void onBindViewHolder(ItemAdapter.ItemViewHolder itemViewHolder, int i) {
ItemgroupDb itemgroupDb = itemgroupDbs.get(i);
itemViewHolder.vName.setText(itemgroupDb.getItemName());
Log.e("Itemname", String.valueOf(itemgroupDb.getItemName()));
}
@Override
public ItemViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View itemView = LayoutInflater.
from(viewGroup.getContext()).
inflate(R.layout.child3_row, viewGroup, false);
return new ItemViewHolder(itemView);
}
public class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
protected TextView vName;
protected ImageView vImage;
public ItemViewHolder(View v) {
super(v);
vName = (TextView) v.findViewById(R.id.childname);
vImage=(ImageView)v.findViewById(R.id.iv_item_image);
v.setOnClickListener(this);
}
@Override
public void onClick(View v) {
itemListener.recyclerViewListClicked(v, 1, this.getLayoutPosition(), itemgroupDbs.get(this.getLayoutPosition()).getLevel());
notifyDataSetChanged();
}
}
clicklistener的接口
public interface RecyclerViewClickListener {
public void recyclerViewListClicked(View v, int id, int level, int position);
}
答案 0 :(得分:0)
你可以试试这个
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder>{
public static class ViewHolder extends RecyclerView.ViewHolder {
//your other views
private View parentView;
public ViewHolder(View v) {
super(v);
parentView = v;
}
public View getParentView(){
return parentView;
}
}
@Override
public void onBindViewHolder(final ViewHolder vh, final int position) {
View.OnClickListener anOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
aMethodThatAddNewRecyclerViewDynamicallyToThisRecyclerView();
}
};
vh.getParentView().setOnClickListener(anOnClickListener);
}
}