Android实现树形层级ListView

2019-12-10 19:06:15于丽
易采站长站为您分析Android实现树形层级ListView的相关资料,需要的朋友可以参考下  

直接贴代码,代码中有相应注释: 
主界面Activity,布局就只一个ListView:

 

public class MainActivity extends Activity {
private ListView mListView;
private TreeListViewAdapter<TestBean> mAdapter;
private List<TestBean> mDatas = new ArrayList<TestBean>();

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.mListView = (ListView) findViewById(R.id.listview);
initTestDatas();
try {
mAdapter = new TreeListViewAdapter<TestBean>(mListView, this, mDatas, 0);
}
catch (Exception e) {
e.printStackTrace();
}
this.mListView.setAdapter(mAdapter);
mAdapter.setmTreeListener(new TreeViewOnItemClick() {


@Override
public void onTreeItemClick(int position, Node node) {
Toast.makeText(MainActivity.this, "你点击的是:" + node.getName(), Toast.LENGTH_SHORT).show();
}
});
this.mListView.setOnItemLongClickListener(new OnItemLongClickListener() {


@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, final int arg2, long arg3) {
final EditText edt = new EditText(MainActivity.this);
new AlertDialog.Builder(MainActivity.this).setTitle("Insert").setView(edt).setPositiveButton("submit", new OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
if (TextUtils.isEmpty(edt.getText().toString())) {
Toast.makeText(MainActivity.this, "请填写添加内容", Toast.LENGTH_SHORT).show();
}
else {
mAdapter.insertNodeData(arg2, edt.getText().toString());
}
}
}).setNegativeButton("Cancel", null).create().show();
return true;
}
});
}


private void initTestDatas() {
TestBean bean = null;
bean = new TestBean(1, 0, "文件目录1");
mDatas.add(bean);
bean = new TestBean(2, 0, "文件目录2");
mDatas.add(bean);
bean = new TestBean(3, 0, "文件目录3");
mDatas.add(bean);
bean = new TestBean(4, 1, "文件目录4");
mDatas.add(bean);
bean = new TestBean(5, 1, "文件目录5");
mDatas.add(bean);
bean = new TestBean(6, 2, "文件目录6");
mDatas.add(bean);
bean = new TestBean(7, 2, "文件目录7");
mDatas.add(bean);
bean = new TestBean(8, 3, "文件目录8");
mDatas.add(bean);
bean = new TestBean(9, 3, "文件目录9");
mDatas.add(bean);
bean = new TestBean(10, 0, "文件目录10");
mDatas.add(bean);
}
}