【发布时间】:2016-04-20 08:48:02
【问题描述】:
我有一个片段中项目的根 recyclerview。点击 recyclerview 中的每个项目,它使用与根 recyclerview 相同的 Adapter 生成一个动态 recyclerview 列表。我想实现子recyclerview的OnClick监听器,并用二级recyclerview生成下一级项目。我已经寻找了很多答案,但我发现的是为根项目实现的点击侦听器。我已经在我的适配器的视图中实现了我的监听器。
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();
}
}
点击监听接口
public interface RecyclerViewClickListener {
public void recyclerViewListClicked(View v, int id, int level, int position);
}
【问题讨论】:
-
在这里也发布你的代码
-
@AdnanAmjad 这是我的代码。
标签: android onclicklistener android-recyclerview