安卓listView实现多级列表
实现两级列表我们可以使用ExpandableListView,但对于实现多级列表,使用ExpandableListView嵌套实现起来就比较费劲,可以使用listView的显示隐藏来实现
先上效果图
1.xml文件
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listView"
/>
2.主activity
package com.example.ceshiapplication.ui;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.ListView;
import com.example.ceshiapplication.R;
import com.example.ceshiapplication.adapter.LieBiaoAdapter;
import com.example.ceshiapplication.bean.DataInfo;
import com.example.ceshiapplication.utlis.LieBiaoItemClickListener;
import java.util.ArrayList;
import java.util.List;
import androidx.appcompat.app.AppCompatActivity;
public class LieBiaoActivity extends AppCompatActivity {
private ListView listView;
private List<DataInfo> mData = new ArrayList<>();
private List<DataInfo> mDataChild = new ArrayList<>();
private LieBiaoAdapter lieBiaoAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lie_biao);
initView();
}
private void initView() {
listView = (ListView) findViewById(R.id.listView);
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
initData();
lieBiaoAdapter = new LieBiaoAdapter(inflater, mData, mDataChild);
listView.setAdapter(lieBiaoAdapter);
LieBiaoItemClickListener lieBiaoItemClickListener = new LieBiaoItemClickListener(lieBiaoAdapter);
listView.setOnItemClickListener(lieBiaoItemClickListener);
}
private void initData() {
//添加节点 -- 节点名称,节点level,节点id,父节点id,是否有子节点,是否展开
//最外层列表
DataInfo data1 = new DataInfo("北京市", DataInfo.TOP_LEVEL, 0, DataInfo.NO_PARENT, true, false);
//第二层列表
DataInfo data2 = new DataInfo("朝阳区", DataInfo.TOP_LEVEL + 1, 1, data1.getId(), true, false);
//第三层列表
DataInfo data7 = new DataInfo("来广营", DataInfo.TOP_LEVEL + 2, 2, dat