如何在android中嵌套二级列表

avatar
作者
猴君
阅读量:0

在Android中嵌套二级列表,通常可以使用RecyclerView结合LinearLayoutManager来实现。以下是一个简单的步骤指南,帮助你实现嵌套二级列表:

1. 添加依赖

首先,在你的build.gradle文件中添加RecyclerView的依赖:

dependencies {     implementation 'com.android.support:recyclerview-v7:28.0.0' } 

2. 创建布局文件

在你的主布局文件中添加RecyclerView

<android.support.v7.widget.RecyclerView     android:id="@+id/recyclerView"     android:layout_width="match_parent"     android:layout_height="match_parent"/> 

3. 创建数据模型

创建一个数据模型来表示你的列表项。例如,假设你有一个包含列表项的列表:

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;     } } 

对于每个主列表项,你可以创建一个子列表:

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;     } } 

4. 创建适配器

创建一个适配器来填充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)); // 假设每个主列表项只有一个子列表          // 创建子列表适配器         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);         }     } } 

5. 创建子列表适配器

创建一个适配器来填充子列表:

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);         }     } } 

6. 初始化RecyclerView

在你的Activity或Fragment中初始化RecyclerView并设置适配器:

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);     } } 

7. 创建布局文件

创建list_item.xmlsub_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中实现了一个嵌套的二级列表。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!