如何在我的RecyclerView中添加页脚

时间:2018-02-27 02:32:28

标签: android

我有一个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做一些事情,但我不知道该怎么做。我也不确定这是否是唯一的问题。任何帮助将不胜感激。

1 个答案:

答案 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

    }

您必须为ViewHolderContent提供两个不同的Footer