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);
}
}