我尝试了很多例子,但没有人适合。请看一下我的代码。在onCreateViewHolder中我有错误
错误:(64,17)错误:名称冲突:MyAdapter中的onBindViewHolder(ViewHolder,int)和适配器中的onBindViewHolder(VH,int)具有相同的擦除,但都没有覆盖其他 其中VH是一个类型变量: VH扩展了类Adapter
中声明的ViewHolder
和
错误:(51,36)错误:MyAdapter中的onCreateViewHolder(ViewGroup,int)无法覆盖适配器中的onCreateViewHolder(ViewGroup,int) 返回类型ViewHolder与MyViewHolder不兼容 其中VH是一个类型变量: VH扩展了类Adapter
中声明的ViewHolder
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
ArrayList<String> dataset_;
public static final int MODE_DATA = 0;
public static final int MODE_LOADING = 1;
public static class MyViewHolder extends RecyclerView.ViewHolder{
public TextView mTextView;
public TextView mTextView2;
public MyViewHolder(View v){
super(v);
mTextView = (TextView) itemView.findViewById(R.id.textView);
mTextView2 = (TextView) itemView.findViewById(R.id.textView2);
}
}
public static class MyLoadingViewHolder extends RecyclerView.ViewHolder{
public MyLoadingViewHolder(View v){
super(v);
}
}
@Override
public int getItemViewType(int position) {
if (position == dataset_.size() - 1) {
return MODE_LOADING;
} else {
return MODE_DATA;
}
}
public MyAdapter (ArrayList<String> dataset){
dataset_ = dataset;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
if (viewType == MODE_LOADING) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.progress_bar, parent, false);
MyLoadingViewHolder loadingViewHolder = new MyLoadingViewHolder(v);
return loadingViewHolder;
} else {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_text_view, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(v);
return myViewHolder;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder,int position){
if (position == MODE_LOADING){
// Do nothig just show progress bar
}
else {
((MyViewHolder)holder).mTextView.setText(dataset_.get(position));
((MyViewHolder)holder).mTextView2.setText(dataset_.get(position));
}
}
@Override
public int getItemCount(){
return dataset_.size();
}
}
我的进度条
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/progress_bar_panel"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ProgressBar
android:id="@+id/progress_bar"
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:visibility="visible" />
</RelativeLayout>
答案 0 :(得分:0)
使用RecyclerView.ViewHolder
作为Adapter类的通用参数。
如果您想要一个支持多种视图类型的适配器,则需要将所有ViewHolders的超类指定为通用参数。
查看enter link description here以获取更多想法 - 它展示了如何通过在单独的类中提取所有绑定/视图创建逻辑来使Adapter更容易维护。在这种情况下,适配器唯一的责任是管理它配置使用的ViewHolder委托。