RecyclerView实现点击折叠效果
时间: 2023-11-16 11:03:00 浏览: 94
RecyclerView 点击折叠效果的实现可以通过自定义 RecyclerView.Adapter 实现。
1. 在 RecyclerView.Adapter 中定义一个 boolean 类型的变量用于记录当前 item 的展开状态。
2. 在 onBindViewHolder 方法中判断当前 item 是否展开,根据展开状态设置 item 的高度。如果当前 item 是展开状态,则高度为全部内容的高度;否则,高度为折叠后的高度。
3. 在 item 的点击事件中,改变展开状态并调用 notifyDataSetChanged() 方法刷新数据。
以下是示例代码:
```java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private boolean isExpanded = false; // 记录当前 item 是否展开
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// 创建 ViewHolder
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
// 绑定数据
if (isExpanded) {
// 如果当前 item 是展开状态,则设置 item 的高度为全部内容的高度
holder.itemView.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
} else {
// 否则,高度为折叠后的高度
holder.itemView.getLayoutParams().height = 200;
}
}
@Override
public int getItemCount() {
// 返回数据集大小
return 10;
}
class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(View itemView) {
super(itemView);
// 设置 item 的点击事件
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 改变展开状态
isExpanded = !isExpanded;
// 刷新数据
notifyDataSetChanged();
}
});
}
}
}
```
阅读全文