在RecyclerView中添加footerView是一种常见的需求,可以通过以下步骤实现:
下面是一个示例代码:
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int VIEW_TYPE_ITEM = 0;
private static final int VIEW_TYPE_FOOTER = 1;
private List<Item> itemList;
private View footerView;
public MyAdapter(List<Item> itemList) {
this.itemList = itemList;
}
public void addFooterView(View footerView) {
this.footerView = footerView;
notifyItemInserted(itemList.size());
}
@Override
public int getItemViewType(int position) {
if (position == itemList.size()) {
return VIEW_TYPE_FOOTER;
} else {
return VIEW_TYPE_ITEM;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == VIEW_TYPE_ITEM) {
// create and return item view holder
} else if (viewType == VIEW_TYPE_FOOTER) {
// create and return footer view holder
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof ItemViewHolder) {
// bind item data
} else if (holder instanceof FooterViewHolder) {
// bind footer view
}
}
@Override
public int getItemCount() {
return itemList.size() + 1; // add 1 for footer view
}
private class ItemViewHolder extends RecyclerView.ViewHolder {
// item view holder implementation
}
private class FooterViewHolder extends RecyclerView.ViewHolder {
// footer view holder implementation
}
}
在Activity或Fragment中使用该Adapter:
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
MyAdapter adapter = new MyAdapter(itemList);
View footerView = LayoutInflater.from(this).inflate(R.layout.footer_view, recyclerView, false);
adapter.addFooterView(footerView);
recyclerView.setAdapter(adapter);
在上述代码中,itemList是RecyclerView中的数据列表,R.layout.footer_view是footerView的布局文件。
这样就可以在RecyclerView中成功添加footerView了。请注意,这只是一种实现方式,具体的实现可能会因项目需求而有所不同。
云+社区技术沙龙[第19期]
云+社区技术沙龙[第27期]
腾讯技术创作特训营第二季
云原生正发声
taic
taic
DB TALK 技术分享会
Elastic 实战工作坊
Elastic 实战工作坊
云+社区沙龙online [国产数据库]
DBTalk
领取专属 10元无门槛券
手把手带您无忧上云