在Android中嵌套二級(jí)列表,通常可以使用RecyclerView
結(jié)合LinearLayoutManager
來(lái)實(shí)現(xiàn)。以下是一個(gè)簡(jiǎn)單的步驟指南,幫助你實(shí)現(xiàn)嵌套二級(jí)列表:
首先,在你的build.gradle
文件中添加RecyclerView
的依賴:
dependencies {
implementation 'com.android.support:recyclerview-v7:28.0.0'
}
在你的主布局文件中添加RecyclerView
:
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
創(chuàng)建一個(gè)數(shù)據(jù)模型來(lái)表示你的列表項(xiàng)。例如,假設(shè)你有一個(gè)包含列表項(xiàng)的列表:
public class MainList {
private List<String> mainItems;
public MainList() {
mainItems = new ArrayList<>();
mainItems.add("Item 1");
mainItems.add("Item 2");
mainItems.add("Item 3");
}
public List<String> getMainItems() {
return mainItems;
}
}
對(duì)于每個(gè)主列表項(xiàng),你可以創(chuàng)建一個(gè)子列表:
public class SubList {
private List<String> subItems;
public SubList() {
subItems = new ArrayList<>();
subItems.add("Sub Item 1");
subItems.add("Sub Item 2");
subItems.add("Sub Item 3");
}
public List<String> getSubItems() {
return subItems;
}
}
創(chuàng)建一個(gè)適配器來(lái)填充RecyclerView
:
public class MainListAdapter extends RecyclerView.Adapter<MainListAdapter.MainViewHolder> {
private List<MainList> mainLists;
public MainListAdapter(List<MainList> mainLists) {
this.mainLists = mainLists;
}
@NonNull
@Override
public MainViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
return new MainViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MainViewHolder holder, int position) {
MainList mainList = mainLists.get(position);
holder.textViewMain.setText(mainList.getMainItems().get(0)); // 假設(shè)每個(gè)主列表項(xiàng)只有一個(gè)子列表
// 創(chuàng)建子列表適配器
SubListAdapter subListAdapter = new SubListAdapter(mainList.getSubItems());
holder.recyclerViewSubList.setLayoutManager(new LinearLayoutManager(holder.itemView.getContext(), LinearLayoutManager.VERTICAL, false));
holder.recyclerViewSubList.setAdapter(subListAdapter);
}
@Override
public int getItemCount() {
return mainLists.size();
}
static class MainViewHolder extends RecyclerView.ViewHolder {
TextView textViewMain;
RecyclerView recyclerViewSubList;
MainViewHolder(View itemView) {
super(itemView);
textViewMain = itemView.findViewById(R.id.textViewMain);
recyclerViewSubList = itemView.findViewById(R.id.recyclerViewSubList);
}
}
}
創(chuàng)建一個(gè)適配器來(lái)填充子列表:
public class SubListAdapter extends RecyclerView.Adapter<SubListAdapter.SubViewHolder> {
private List<String> subItems;
public SubListAdapter(List<String> subItems) {
this.subItems = subItems;
}
@NonNull
@Override
public SubViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sub_list_item, parent, false);
return new SubViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull SubViewHolder holder, int position) {
holder.textViewSub.setText(subItems.get(position));
}
@Override
public int getItemCount() {
return subItems.size();
}
static class SubViewHolder extends RecyclerView.ViewHolder {
TextView textViewSub;
SubViewHolder(View itemView) {
super(itemView);
textViewSub = itemView.findViewById(R.id.textViewSub);
}
}
}
RecyclerView
在你的Activity或Fragment中初始化RecyclerView
并設(shè)置適配器:
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerViewMain;
private MainListAdapter mainListAdapter;
private List<MainList> mainLists;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerViewMain = findViewById(R.id.recyclerView);
recyclerViewMain.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
mainLists = new ArrayList<>();
for (int i = 0; i < 3; i++) {
MainList mainList = new MainList();
mainLists.add(mainList);
}
mainListAdapter = new MainListAdapter(mainLists);
recyclerViewMain.setAdapter(mainListAdapter);
}
}
創(chuàng)建list_item.xml
和sub_list_item.xml
布局文件:
list_item.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/textViewMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textStyle="bold"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerViewSubList"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
sub_list_item.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dp">
<TextView
android:id="@+id/textViewSub"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"/>
</LinearLayout>
這樣,你就成功地在Android中實(shí)現(xiàn)了一個(gè)嵌套的二級(jí)列表。