我有这种类型的Json:
[
{
"title": "title1",
....
"category": "tag1"
},
{
"title": "title1",
....
"category": "tag2"
},
{
"title": "title1",
....
"category": "tag3"
}
]
我在我的recyclerview中使用flexboxlayout将类别分组为相同的 Headers :
flexboxLayout:
android:id="@+id/tags_holder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
app:flexWrap="wrap"
app:showDividerVertical="middle"
app:flexDirection="column_reverse"
app:alignItems="stretch"
app:alignContent="stretch"/>
Adapter:
@Override public void bindViewHolder(最终的FlexibleAdapter适配器,最终的SimpleViewHolder持有者,int位置,列表有效负载){
holder.title.setText(replacement.getTitle());
LinearLayout layout =(LinearLayout)LayoutInflater.from(context).inflate(R.layout.textview,null); TextView tagView =(TextView)layout.findViewById(R.id.textview);
tagView.setText(replacement.getCategory());
holder.mTagsHolder.addView(layout);
主要活动;
private void initializeRecyclerView(final List categoryList) {
List items = new ArrayList<>();
SimpleItem simpleItem;
List list = new ArrayList<>();
String category;
for (int i = 0; i < categoryList.size(); i++) {
category = categoryList.get(i).getCategory();
list.add(category);
simpleItem = new SimpleItem(categoryList.get(i), list, this, this);
while (i + 1 < categoryList.size()
&& replacementList.get(i + 1).getTitle().equals(categoryList.get(i).getTitle())) {
category = categoryList.get(i+1).getCategory();
list.add(category);
simpleItem = new SimpleItem(categoryList.get(i), list, this, this);
i++;
}
items.add(simpleItem);
}
this.items = items;
this.list=list;
recyclerNewsList.setVisibility(View.VISIBLE);
adapter.setNewsListAdapter(replacementList);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recyclerNewsList.setLayoutManager(linearLayoutManager);
recyclerNewsList.setHasFixedSize(true); //Size of RV will not change
adapter = new ExampleAdapter(items, null);
adapter.notifyDataSetChanged();
recyclerNewsList.setAdapter(adapter);
}
.