private class MyAdapter extends TreeListAdapter {
MyAdapter(ListView lv, List nodes) {
super(lv, nodes);
}
@Override
public int getViewTypeCount() {
return super.getViewTypeCount() + 1;
}
/**
* 获取当前位置的条目类型
*/
@Override
public int getItemViewType(int position) {
if (getItem(position).hasChild()) {
return 1;
}
return 0;
}
@Override
protected Holder getHolder(int position) {
switch(getItemViewType(position)) {
case 1:
return new Holder() {
private ImageView iv;
private TextView tv;
@Override
public void onBind(Item node) {
iv.setVisibility(node.hasChild() ? View.VISIBLE : View.INVISIBLE);
iv.setBackgroundResource(node.isExpand ? R.mipmap.expand : R.mipmap.fold);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) iv.getLayoutParams();
params.leftMargin = (node.level + 1) * dip2px(20);
iv.setLayoutParams(params);
tv.setText(node.name);
}
@Override
public View createView() {
View view = View.inflate(MainActivity.this, R.layout.item_tree_list_has_child, null);
iv = (ImageView) view.findViewById(R.id.ivIcon);
tv = (TextView) view.findViewById(R.id.tvName);
return view;
}
};
default:
return new Holder() {
private TextView tv;
@Override
public void onBind(Item node) {
tv.setText(node.name);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) tv.getLayoutParams();
params.leftMargin = (node.level + 3) * dip2px(20);
tv.setLayoutParams(params);
}
@Override
public View createView() {
View view = View.inflate(MainActivity.this, R.layout.item_tree_list_no_child, null);
tv = (TextView) view.findViewById(R.id.tvName);
return view;
}
};
}
}
}