and*_*dro 2 android arraylist android-recyclerview
我有json转换成模型
Arraylist<model> data
Run Code Online (Sandbox Code Playgroud)
所以我想在json中按类型添加标题,所以如果在arraylist中有2个不同的类型,那么在recyclerView中将有2个标题,并且相关数据将作为列表.所以当前的例子我有2个typ2 - 1)名称2)值,所以我如何将2个标题添加到recyclerView,然后所有数据的类型作为名称
JSON
{
"info": [
{
"Id": 12,
"Name": "hi",
"Type": "name"
},
{
"Id": 1,
"Name": "hi1",
"Type": "name"
},
{
"Id": 13,
"Name": "hi",
"Type": "value"
},
{
"Id": 15,
"Name": "hi3",
"Type": "name"
},
{
"Id": 16,
"Name": "hi",
"Type": "value"
},
{
"Id": 20,
"Name": "hi5",
"Type": "value"
},
{
"Id": 24,
"Name": "bye",
"Type": "name"
},
{
"Id": 12,
"Name": "hi",
"Type": "name"
}
]
Run Code Online (Sandbox Code Playgroud)
小智 6
我假设您的布局设计已准备好作为您给定的图像链接.基本上你需要02个布局设计,其中一个用于标题,另一个用于每个项目的页脚.现在,您可以使用适配器动态添加标头,如下所示:
public class YourRecyclerViewAdapter extends RecyclerView.Adapter {
private final int VIEW_ITEM_HEADER = 1; // type: name/value
private final int VIEW_ITEM_FOOTER = 0;
private List<PojoModel> mData;
private Context mContext;
public YourRecyclerViewAdapter(Context context, List<PojoModel> data) {
this.mContext = context;
this.mData = data;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder viewHolder;
if (viewType == VIEW_ITEM_HEADER) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_header, parent, false);
viewHolder = new HeaderHolder(view);
} else {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer, parent, false);
viewHolder = new FooterHolder(view);
}
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
PojoModel item = mData.get(position);
if (holder instanceof HeaderHolder) {
HeaderHolder mHolder = (HeaderHolder)holder;
// do your stuff
} else {
FooterHolder mHolder = (FooterHolder)holder;
// do your stuff
}
}
@Override
public int getItemViewType(int position) {
return mData.get(position) != null ? VIEW_ITEM_HEADER : VIEW_ITEM_FOOTER;
}
@Override
public int getItemCount() {
return mData.size();
}
public class HeaderHolder extends RecyclerView.ViewHolder {
public HeaderHolder(View itemView) {
super(itemView);
// declare your header views
}
}
public class FooterHolder extends RecyclerView.ViewHolder {
public FooterHolder(View itemView) {
super(itemView);
// declare your footer views
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5829 次 |
| 最近记录: |