我有一个项目持有者类和FirebaseRecyclerAdapter。 如何从填充recyclelerview的项目上的活动管理点击监听器。
我的持有人
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
}
};
我阅读了一些建议使用界面的教程。你能告诉我怎么做吗?一些示例代码或说明。
感谢。
答案 0 :(得分:0)
1无论如何,您可以直接在onBindViewHolder上执行此操作:
holder.item1.setImageDrawable(item.getItem1());
holder.item2.setImageDrawable(item.getItem2());
2要点击某个项目,您需要ClickListener.java
和RecyclerTouchListener.java
,您可以查看blog。在你的活动中:
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
}
}));
答案 1 :(得分:0)
在bindView
方法中,它就像执行所有标准视图操作一样简单......所以你要做这样的事情:
item1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
// TODO you
}
}