要實現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的可見性。