在recyclerview中附加onClickListener的最佳位置

时间:2015-03-06 17:39:58

标签: android onclicklistener android-recyclerview

虽然我正在查看有关recycleler view.some的一些教程,但是他们使用了viewHolder构造函数来附加onClick侦听器,而其中一些使用了onBindViewHolder方法。哪个方法是附加onclicklistener的最佳位置。我真的很困惑

3 个答案:

答案 0 :(得分:7)

每次将视图与数据绑定时,都会调用方法onBindViewHolder。所以没有设置点击监听器的最佳位置。您不必为OnClickListener View多次设置onCreateViewHolder。所以最好的解决方案是在getAdapterPosition()方法中设置点击监听器。但重要的是你如何在点击监听器上实现。例如,如果您想从列表中获取某些模型,则可以使用ViewHolder中的@Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { final View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.view_magazine_list_item, null); final ViewHolder result = new ViewHolder(view); view.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ YourObject yourobject = yourObjectsList.get(result.getAdapterPosition())); } }); return result; } 方法。

看看exmaple

{{1}}

答案 1 :(得分:1)

ViewHolder中是更好的地方:

public static class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

    //views declare here

    public ItemViewHolder(View convertView)
    {
        super(convertView);

        ... ...

        convertView.setOnClickListener(this);
    }



    @Override
    public void onClick(View v)
    {
       //do something to view here
           //also you can get view position by 'getPosition()' here     

    }


}

答案 2 :(得分:0)

onClickListener的{​​{1}}类内使用ViewHolder的最佳实践,如下所示:-

Recyclview