e)) { holder.icon.setImageBitmap(mIconCollapse); } else if (obj.isHasChild() && (obj.isExpanded() == true)) { holder.icon.setImageBitmap(mIconExpand); } else if (!obj.isHasChild()) { holder.icon.setImageBitmap(mIconCollapse); holder.icon.setVisibility(View.INVISIBLE); } return convertView; } class ViewHolder { TextView text; ImageView icon; } } @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); Log.i("TreeView", "position:" + position); if (!nodes.get(position).isHasChild()) { Toast.makeText(this, nodes.get(position).getTitle(), 2000); return; } if (nodes.get(position).isExpanded()) { nodes.get(position).setExpanded(false); TreeElement element = nodes.get(position); ArrayList temp = new ArrayList(); for (int i = position + 1; i < nodes.size(); i++) { if (element.getLevel() >= nodes.get(i).getLevel()) { break; } temp.add(nodes.get(i)); } nodes.removeAll(temp); treeViewAdapter.notifyDataSetChanged(); } else { TreeElement obj = nodes.get(position); obj.setExpanded(true); int level = obj.getLevel(); int nextLevel = level + 1; for (TreeElement element : obj.getChilds()) { element.setLevel(nextLevel); element.setExpanded(false); nodes.add(position + 1, element); } treeViewAdapter.notifyDataSetChanged(); } } }
Android 经典示例源码下载地址:
具体下载目录在 /pub/Android源码集锦/2011年/9月/Android 经典示例源码/
|