如何使用FirebaseRecyclerAdapter实现点击监听器

时间:2018-03-16 16:46:40

标签: android android-recyclerview onclick firebaseui

我有一个项目持有者类和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
            }
        };

我阅读了一些建议使用界面的教程。你能告诉我怎么做吗?一些示例代码或说明。

感谢。

2 个答案:

答案 0 :(得分:0)

1无论如何,您可以直接在onBindViewHolder上执行此操作:

holder.item1.setImageDrawable(item.getItem1());
holder.item2.setImageDrawable(item.getItem2());

2要点击某个项目,您需要ClickListener.javaRecyclerTouchListener.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
    }
}