andriod点击展开列表
时间: 2025-01-01 20:32:35 浏览: 7
### Android 平台点击展开列表功能实现
#### 使用 `ExpandableListView` 实现二级列表
为了实现在 Android 中通过点击来展开或收起子项的效果,可以使用 `ExpandableListView` 组件。此组件允许创建具有父组和子元素结构的数据集表示形式。
```java
// 创建适配器并绑定到 ExpandableListView
BaseExpandableListAdapter adapter = new BaseExpandableListAdapter() {
@Override
public int getGroupCount() { /* 返回分组数量 */ }
@Override
public Object getGroup(int groupPosition) {/* 获取指定位置处的分组数据 */}
@Override
public long getGroupId(int groupPosition){/* ... */}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent){
// 设置父条目的视图逻辑...
}
@Override
public int getChildrenCount(int groupPosition) {/* 子项计数...*/}
@Override
public Object getChild(int groupPosition, int childPosition) {/*获取子项数据*/}
@Override
public long getChildId(int groupPosition, int childPosition) {/*...*/}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent){
//设置子条目的视图逻辑...
}
//其他必要的重写方法...
};
expandableListView.setAdapter(adapter);
```
当用户单击某个小组时会触发其下的子项目显示或隐藏[^2]。
#### 自定义可折叠 `TextView`
对于更复杂的场景,比如只希望部分文本可见而其余内容可以通过点击按钮查看,则需要自定义布局与交互行为:
```xml
<!-- 布局文件 -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical">
<TextView
android:id="@+id/text_view_content"/>
<Button
android:id="@+id/button_toggle_text"
android:text="查看更多"/>
</LinearLayout>
```
Java/Kotlin 代码处理折叠状态切换:
```java
final TextView textViewContent = findViewById(R.id.text_view_content);
final Button buttonToggleText = findViewById(R.id.button_toggle_text);
buttonToggleText.setOnClickListener(new OnClickListener(){
private boolean expanded = false;
@Override
public void onClick(View v) {
if (!expanded) {
textViewContent.setMaxLines(Integer.MAX_VALUE); // 完全展示
buttonToggleText.setText("收起");
} else {
textViewContent.setEllipsize(TextUtils.TruncateAt.END);
textViewContent.setMaxLines(2); // 只看前几行
buttonToggleText.setText("查看更多");
}
expanded = !expanded;
}
});
```
这种方式能够满足特定情况下对文本长度控制的需求,并提供良好的用户体验[^3]。
阅读全文