我有一个物品持有人类和FirebaseRecyclerAdapter。如何从填充回收器视图的项目的活动管理单击侦听器。
我的持有人
public class ItemHolder extends RecyclerView.ViewHolder{
public ImageView item1,item2;
public ItemHolder(View itemView) {
super(itemView);
item1= itemView.findViewById(R.id.tv_item1);
item2= itemView.findViewById(R.id.tv_item2);
}
public void bindView(Item item) {
//TO DO
}
}
在我的活动内部
adapter = new FirebaseRecyclerAdapter<Item, ItemHolder>(options) {
@Override
protected void onBindViewHolder(final ItemHolder holder, final int position, @NonNull final Item item) {
holder.bindView(item);
//How to handle
//holder.item1 click listener not in onBindViewHolder
//holder.item2 how to handle click listener not in OnBindViewHolder
}
@Override
public ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ItemHolder(getLayoutInflater().from(parent.getContext()).inflate(R.layout.item, parent, false));
}
@Override
public void onDataChanged() {
//TO DO
}
};
我阅读了一些建议使用界面的教程。你能告诉我怎么做吗?带有一些示例代码或说明。
谢谢。
1 无论如何,你可以直接在 onBindViewHolder 中做到这一点:
holder.item1.setImageDrawable(item.getItem1());
holder.item2.setImageDrawable(item.getItem2());
2 要单击一个项目,您需要ClickListener.java
和RecyclerTouchListener.java
,您可以查看此博客。在您的活动中:
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(this, recyclerView, new ClickListener() {
@Override
public void onClick(View view, int position) {
//For CLICK
}
@Override
public void onLongClick(View view, int position) {
//For Long CLICK
}
}));
在您的bindView
方法中,就像执行所有标准视图操作一样简单...所以你会做这样的事情:
item1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
// TODO you
}
}