阅读量:0
要实现Android中的展开收起列表功能,可以使用ExpandableListView或RecyclerView来实现。以下是使用RecyclerView的步骤:
创建一个RecyclerView,并设置适配器来展示列表数据。
在适配器中,为每个列表项添加一个标记来表示该项是否已展开。
当用户点击列表项时,切换该项的展开状态,并更新适配器。
在RecyclerView的ViewHolder中,根据列表项的展开状态,设置相应的视图可见性来实现展开和收起的效果。
下面是一个简单的示例代码:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> data; private List<Boolean> expandedList; public MyAdapter(List<String> data) { this.data = data; expandedList = new ArrayList<>(); for (int i = 0; i < data.size(); i++) { expandedList.add(false); } } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, final int position) { holder.textView.setText(data.get(position)); if (expandedList.get(position)) { holder.subLayout.setVisibility(View.VISIBLE); } else { holder.subLayout.setVisibility(View.GONE); } holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { expandedList.set(position, !expandedList.get(position)); notifyItemChanged(position); } }); } @Override public int getItemCount() { return data.size(); } public static class ViewHolder extends RecyclerView.ViewHolder { TextView textView; LinearLayout subLayout; public ViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); subLayout = itemView.findViewById(R.id.subLayout); } } }
在这个示例中,每个列表项都有一个主要的TextView和一个包含详细信息的LinearLayout。当用户点击列表项时,展开状态会切换,并根据展开状态来设置subLayout的可见性。