Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ButterKnife onClick监听器内置ViewHolder方法_Java_Android_Onclick_Android Viewholder_Butterknife - Fatal编程技术网

Java ButterKnife onClick监听器内置ViewHolder方法

Java ButterKnife onClick监听器内置ViewHolder方法,java,android,onclick,android-viewholder,butterknife,Java,Android,Onclick,Android Viewholder,Butterknife,在这种方法中,向视图添加黄油刀的@OnClick的正确方法是什么 private List<Foo> foos; private RecyclerView recyclerView; private MapActivity mapView; @Override public RecyclerView.ViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType)

在这种方法中,向视图添加黄油刀的
@OnClick
的正确方法是什么

    private List<Foo> foos;
    private RecyclerView recyclerView;
    private MapActivity mapView;
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_foo, parent,
                false);
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int selectedPosition = recyclerView.getChildAdapterPosition(v);
                mapView.onFooSelected(foos.get(selectedPosition));
            }
        });

        return new FooInfoViewHolder(view);
    }
私有列表foos;
私人回收站;
私有地图活动地图视图;
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(最终视图组父级,最终int视图类型){
View=LayoutFlater.from(parent.getContext())。充气(R.layout.item\u foo,parent,
假);
view.setOnClickListener(新的view.OnClickListener(){
@凌驾
公共void onClick(视图v){
int selectedPosition=recyclerView.getChildAdapterPosition(v);
onFooSelected(foos.get(selectedPosition));
}
});
返回新的FooInfoViewHolder(视图);
}

这个问题的不同之处在于,我想将
@OnClick
绑定到
fooinfoiwviewholder
本身。

使用ViewHolder类,在该类中,我们可以处理黄油刀的点击

下面是理解的示例

public class YourAdapter extends RecyclerView.Adapter<YourAdapter.ViewHolder> {

    private List<Data> list;

    public YourAdapter(List<Data> list) {
        this.list = list;
    }

    @Override
    public YourAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        return new ViewHolder(inflater.inflate(R.layout.list_item_layout, parent, false));
    }

    @Override
    public void onBindViewHolder(YourAdapter.ViewHolder holder, int position) {
        Data item = list.get(position);
        holder.tvTitle1.setText(item.getTitle1());
    }

    @Override
    public int getItemCount() {
        int count = 0;
        if (null != list) {
            count = list.size();
        }
        return count;
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        @BindView(R.id.tvVRValue1)
        TextView tvTitle1;

        public ViewHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
        }

        @OnClick(R.id.tvVRValue1)
        public void onClickYourFunction(){
            //Here your onclick method goes
        }
    }
}
public类YourAdapter扩展了RecyclerView.Adapter{
私人名单;
公用适配器(列表){
this.list=列表;
}
@凌驾
public YourAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
LayoutInflater充气器=LayoutInflater.from(parent.getContext());
返回新的ViewHolder(充气器。充气(R.layout.list_item_layout,parent,false));
}
@凌驾
BindViewHolder上的public void(YourAdapter.ViewHolder,int位置){
数据项=list.get(位置);
holder.tvTitle1.setText(item.getTitle1());
}
@凌驾
public int getItemCount(){
整数计数=0;
如果(空!=列表){
count=list.size();
}
返回计数;
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
@BindView(R.id.tvVRValue1)
文本视图tvTitle1;
公共视图持有者(视图项视图){
超级(项目视图);
ButterKnife.bind(这个,itemView);
}
@OnClick(R.id.tvVRValue1)
public void onClickYourFunction(){
//这里是您的onclick方法
}
}
}

希望它能帮助你。干杯

使用ViewHolder类,在该类中,我们可以处理黄油刀的点击

下面是理解的示例

public class YourAdapter extends RecyclerView.Adapter<YourAdapter.ViewHolder> {

    private List<Data> list;

    public YourAdapter(List<Data> list) {
        this.list = list;
    }

    @Override
    public YourAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        return new ViewHolder(inflater.inflate(R.layout.list_item_layout, parent, false));
    }

    @Override
    public void onBindViewHolder(YourAdapter.ViewHolder holder, int position) {
        Data item = list.get(position);
        holder.tvTitle1.setText(item.getTitle1());
    }

    @Override
    public int getItemCount() {
        int count = 0;
        if (null != list) {
            count = list.size();
        }
        return count;
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        @BindView(R.id.tvVRValue1)
        TextView tvTitle1;

        public ViewHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
        }

        @OnClick(R.id.tvVRValue1)
        public void onClickYourFunction(){
            //Here your onclick method goes
        }
    }
}
public类YourAdapter扩展了RecyclerView.Adapter{
私人名单;
公用适配器(列表){
this.list=列表;
}
@凌驾
public YourAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
LayoutInflater充气器=LayoutInflater.from(parent.getContext());
返回新的ViewHolder(充气器。充气(R.layout.list_item_layout,parent,false));
}
@凌驾
BindViewHolder上的public void(YourAdapter.ViewHolder,int位置){
数据项=list.get(位置);
holder.tvTitle1.setText(item.getTitle1());
}
@凌驾
public int getItemCount(){
整数计数=0;
如果(空!=列表){
count=list.size();
}
返回计数;
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
@BindView(R.id.tvVRValue1)
文本视图tvTitle1;
公共视图持有者(视图项视图){
超级(项目视图);
ButterKnife.bind(这个,itemView);
}
@OnClick(R.id.tvVRValue1)
public void onClickYourFunction(){
//这里是您的onclick方法
}
}
}

希望它能帮助你。干杯

我发现了问题所在。事实上,我认为这与可能的重复答案略有不同。 关键是在ViewHolder本身上实现
@OnClick
(不像在另一个问题中那样,在视图的子级上实现):


我发现了问题所在。事实上,我认为这与可能的重复答案略有不同。 关键是在ViewHolder本身上实现
@OnClick
(不像在另一个问题中那样,在视图的子级上实现):

public class FooInfoViewHolder extends RecyclerView.ViewHolder {

        @OnClick
        public void onClick(View v) {
            int selectedPosition = recyclerView.getChildAdapterPosition(v);
            mapView.onFooSelected(foos.get(selectedPosition));
        }

        public FooInfoViewHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
        }
    }