gpt4 book ai didi

java - 无法在我的类中使用 onBindViewHolder 实现扩展 RecyclerView.Adapter

转载 作者:行者123 更新时间:2023-12-01 18:00:17 26 4
gpt4 key购买 nike

我刚加入这个论坛不到一周,就遇到了 Android 中 RecyclerView.Adapter 的问题。

通过遵循示例代码和文档,我尝试自己构建一个自定义适配器类,但它停留在从其父类(super class) RecyclerView.Adapter 继承的方法之一上。虽然我像示例代码一样编写了继承viewholder的内部类,但是当涉及到onBindViewHolder()

时,它仍然有错误

这是我的内部类代码:

public static class ViewHolder extends RecyclerView.ViewHolder{
private final TextView tvTitle,tvDate,tvTime;
public ViewHolder(View v){
super(v);

Log.d(TAG,"building view holder");

tvTitle=v.findViewById(R.id.item_tvTitle);
tvDate=v.findViewById(R.id.item_tvDate);
tvTime=v.findViewById(R.id.item_tvTime);

//set onclick listener to start another activity
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}
});
}

public TextView getTvTitle(){return tvTitle;}
public TextView getTvDate(){return tvDate;}
public TextView getTvTime(){return tvTime;}
}

这是我的适配器代码:

public class EventAdapter extends RecyclerView.Adapter {
private static final String TAG="EventAdapter";
private Event[] dataset;

public static class ViewHolder extends RecyclerView.ViewHolder{
private final TextView tvTitle,tvDate,tvTime;
public ViewHolder(View v){
super(v);

Log.d(TAG,"building view holder");

tvTitle=v.findViewById(R.id.item_tvTitle);
tvDate=v.findViewById(R.id.item_tvDate);
tvTime=v.findViewById(R.id.item_tvTime);

//set onclick listener to start another activity
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}
});
}

public TextView getTvTitle(){return tvTitle;}
public TextView getTvDate(){return tvDate;}
public TextView getTvTime(){return tvTime;}
}

public EventAdapter(List<Event> dataset){
Log.d(TAG,"Constructor, converting list to array");
this.dataset=dataset.toArray(new Event[dataset.size()]);
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup container,int viewType){
Log.d(TAG,"onCreateViewHolder");
View v= LayoutInflater.from(container.getContext()).inflate(R.layout.item_event,container,false);
return new ViewHolder(v);
}

@Override
public void onBindViewHolder(ViewHolder viewHolder, final int position){
Log.d(TAG,"onBindViewHolder");

viewHolder.getTvTitle().setText("Title: "+dataset[position].getTitle());
viewHolder.getTvDate().setText("Date: "+dataset[position].getDate());
viewHolder.getTvTime().setText("Time: "+dataset[position].getTime());
}

@Override
public int getItemCount(){return dataset.length;}
}

以下是它显示的错误:

1. class 'EventAdapter'(which is my class inherited from the adapter) must either declared as abstract or implements abstract method onBindViewHolder(VH,int) in 'Adapter'
2. method(means the onBindViewHolder) does not override or implement a method from a supertype

感谢您解决我的问题

最佳答案

因此,要成功编译,请更改

public class EventAdapter extends RecyclerView.Adapter<EventAdapter.ViewHolder>

 public void onBindViewHolder(EventAdapter.ViewHolder viewHolder, final int position)

关于java - 无法在我的类中使用 onBindViewHolder 实现扩展 RecyclerView.Adapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60648389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com