我需要在父级和子级列表中制作一个ExpandableListView
,其中包含3个TextView
个。我有parentlist
和childlist
,每行有3 TextView
秒。那我接下来该怎么办?
ArrayList<Contact> list = new ArrayList<>(); //main_equip
list.add(new Contact("Surdialx", "Status","Available Works"));
list.add(new Contact("Surdial", "Status","Available Works"));
list.add(new Contact("Surdialx", "Status","Available Works"));
list.add(new Contact("Surdial", "Status","Available Works"));
list.add(new Contact("Surdialx", "Status","Available Works"));
list.add(new Contact("Surdial", "Status","Available Works"));
ArrayList<Contact1> childlist = new ArrayList<>(); //eq_works
childlist.add(new Contact1("Work №1", "Status", "Priority"));
childlist.add(new Contact1("Work №2", "Status","Priority"));
childlist.add(new Contact1("Work №3", "Status","Priority"));
答案 0 :(得分:0)
以这种方式创建Expandable Recyclerview
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerview = (RecyclerView) findViewById(R.id.recyclerview);
recyclerview.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
List<ExpandableListAdapter.Item> data = new ArrayList<>();
data.add(new ExpandableListAdapter.Item(ExpandableListAdapter.HEADER, "Fruits"));
data.add(new ExpandableListAdapter.Item(ExpandableListAdapter.CHILD, "Apple"));
data.add(new ExpandableListAdapter.Item(ExpandableListAdapter.CHILD, "Orange"));
data.add(new ExpandableListAdapter.Item(ExpandableListAdapter.CHILD, "Banana"));
data.add(new ExpandableListAdapter.Item(ExpandableListAdapter.HEADER, "Cars"));
data.add(new ExpandableListAdapter.Item(ExpandableListAdapter.CHILD, "Audi"));
data.add(new ExpandableListAdapter.Item(ExpandableListAdapter.CHILD, "Aston Martin"));
data.add(new ExpandableListAdapter.Item(ExpandableListAdapter.CHILD, "BMW"));
data.add(new ExpandableListAdapter.Item(ExpandableListAdapter.CHILD, "Cadillac"));
ExpandableListAdapter.Item places = new ExpandableListAdapter.Item(ExpandableListAdapter.HEADER, "Places");
places.invisibleChildren = new ArrayList<>();
places.invisibleChildren.add(new ExpandableListAdapter.Item(ExpandableListAdapter.CHILD, "Kerala"));
places.invisibleChildren.add(new ExpandableListAdapter.Item(ExpandableListAdapter.CHILD, "Tamil Nadu"));
places.invisibleChildren.add(new ExpandableListAdapter.Item(ExpandableListAdapter.CHILD, "Karnataka"));
places.invisibleChildren.add(new ExpandableListAdapter.Item(ExpandableListAdapter.CHILD, "Maharashtra"));
data.add(places);
recyclerview.setAdapter(new ExpandableListAdapter(data));
}
}
答案 1 :(得分:0)
您可以使用此library轻松实现此功能,有一个完整示例here。
基本上,您将项目分组为:
class MySection extends StatelessSection {
String header;
List<Contact> list;
boolean expanded = true;
public MySection(String header, List<Contact> list) {
// call constructor with layout resources for this Section header and items
super(R.layout.section_header, R.layout.section_item);
this.myHeader = header;
this.myList = list;
}
@Override
public int getContentItemsTotal() {
return expanded? list.size() : 0;
}
@Override
public RecyclerView.ViewHolder getHeaderViewHolder(View view) {
return new HeaderViewHolder(view);
}
@Override
public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) {
final HeaderViewHolder headerHolder = (HeaderViewHolder) holder;
headerHolder.tvTitle.setText(title);
headerHolder.rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
expanded = !expanded;
headerHolder.imgArrow.setImageResource(
expanded ? R.drawable.ic_keyboard_arrow_up_black_18dp : R.drawable.ic_keyboard_arrow_down_black_18dp
);
sectionAdapter.notifyDataSetChanged();
}
});
}
@Override
public RecyclerView.ViewHolder getItemViewHolder(View view) {
// return a custom instance of ViewHolder for the items of this section
return new MyItemViewHolder(view);
}
@Override
public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) {
MyItemViewHolder itemHolder = (MyItemViewHolder) holder;
// bind your view here
itemHolder.tvItem.setText(list.get(position).getName());
}
}
然后创建部分的实例并设置适配器:
// Create an instance of SectionedRecyclerViewAdapter
SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter();
// Add your Sections
sectionAdapter.addSection(new MySection("Surdial", surdialList);
sectionAdapter.addSection(new MySection("Surdialx", surdialXList);
sectionAdapter.addSection(new MySection("Work", workList);
// Set up your RecyclerView with the SectionedRecyclerViewAdapter
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(sectionAdapter);