我有一个recyclerview,允许用户将数据添加到其中,而不是已经制作了一个列表。现在我想添加一个始终显示在recyclerview上的页脚,即使它是空的。我的问题是我的回收站视图没有显示第二个布局
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> {
private ArrayList<String> mDataSet;
private class VIEWS_TYPES{
public static final int Normal=1;
public static final int Footer =2;
}
public MainAdapter(ArrayList<String> mDataSet){
this.mDataSet = mDataSet;
}
@Override
public MainAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View rowView;
switch (viewType){
case VIEWS_TYPES.Normal:
rowView=LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_view_row,parent,false);
break;
case VIEWS_TYPES.Footer:
rowView=LayoutInflater.from(parent.getContext()).inflate(R.layout.add_button_recyclerview,parent,false);
break;
default:
} rowView=LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_view_row,parent,false);
return new ViewHolder(rowView);
}
@Override
public void onBindViewHolder(MainAdapter.ViewHolder holder, int position) {
holder.mTitle.setText(mDataSet.get(position));
}
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
@Override
public int getItemCount() {
return mDataSet.size();
}
我想我必须对我的getItemViewType做一些事情,但我不知道该怎么做。我也不确定这是否是唯一的问题。任何帮助将不胜感激。
答案 0 :(得分:0)
从此更改
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
到此:
@Override
public int getItemViewType(int position) {
if (position < mDataSet.size() - 1) {
// content
return VIEWS_TYPES.Normal;
} else {
// footer
return VIEWS_TYPES.Footer;
}
}
因为你有mDataSet.size()+ 1(你的页脚行)
@Override
public int getItemCount() {
return mDataSet.size() + 1;
}
更新onBindViewHolder
@Override
public void onBindViewHolder(MainAdapter.ViewHolder holder, int position) {
if(mDataSet.size()<position)
holder.mTitle.setText(mDataSet.get(position));
else
// it's code for footer
}
您必须为ViewHolder
和Content
提供两个不同的Footer
。