package com.cmw.android.widgets;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.cmw.android.data.TreeDataProvider;
import com.cmw.android.model.TreeElement;
public class MainFrameActivity extends ListActivity{
private List<TreeElement> nodes = new ArrayList<TreeElement>();
private TreeViewAdapter treeViewAdapter = null;
private TreeDataProvider provider = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
provider = new TreeDataProvider(this);
nodes = provider.getDataSource();
treeViewAdapter = new TreeViewAdapter(this, R.layout.mainframe,nodes);
setListAdapter(treeViewAdapter);
registerForContextMenu(getListView());
}
@SuppressWarnings("unchecked")
private class TreeViewAdapter extends ArrayAdapter {
public TreeViewAdapter(Context context, int textViewResourceId,
List objects) {
super(context, textViewResourceId, objects);
mInflater = LayoutInflater.from(context);
mfilelist = objects;
mIconCollapse = BitmapFactory.decodeResource(
context.getResources(), R.drawable.plus);
mIconExpand = BitmapFactory.decodeResource(context.getResources(),
R.drawable.cut);
}
private LayoutInflater mInflater;
private List<TreeElement> mfilelist;
private Bitmap mIconCollapse;
private Bitmap mIconExpand;
public int getCount() {
return mfilelist.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
convertView = mInflater.inflate(R.layout.mainframe, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.treetext);
holder.icon = (ImageView) convertView.findViewById(R.id.icon);
convertView.setTag(holder);
final TreeElement obj = mfilelist.get(position);
holder.text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("TreeView", "obj.id:" + obj.getId());
obj.forward(MainFrameActivity.this);
}
});
int level = obj.getLevel();
holder.icon.setPadding(25 * (level + 1),
holder.icon.getPaddingTop(), 0,
holder.icon.getPaddingBottom());
holder.text.setText(obj.getTitle());
if (obj.isHasChild()&& (obj.isExpanded() == false)) {
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<TreeElement> temp = new ArrayList<TreeElement>();
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 树形控件源码.zip项目安卓应用源码下载Android 树形控件源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
资源推荐
资源详情
资源评论
收起资源包目录
Android 树形控件源码.zip (77个子文件)
Android 树形控件源码
Android 树形控件源码
1-1210161121320-L.jpg 32KB
1_121016112419_1.jpg 18KB
Android 树形控件源码
AndroidManifest.xml 2KB
res
layout
my_listitem.xml 918B
linearlayout_complex_example.xml 3KB
relativelayout_complex_example.xml 2KB
textview_example.xml 1KB
relativelayout_example.xml 1KB
tablelayout_example.xml 1KB
linearlayout_example.xml 3KB
mainframe.xml 907B
task.xml 348B
sended.xml 352B
main.xml 655B
linear_tablelayout_complex_example.xml 3KB
accounts.xml 356B
drawable-ldpi
icon.png 2KB
drawable-mdpi
cut.png 1KB
textback.png 360B
icon.png 3KB
plus.png 1KB
topback.jpg 921B
drawable-hdpi
icon.png 4KB
values
color.xml 258B
strings.xml 1KB
fixids.xml 105B
src
com
cmw
android
data
TreeDataProvider.java 4KB
DataProvider.java 242B
ListDataProvider.java 2KB
model
TreeElement.java 2KB
ui
extend
MarqueeTextView.java 354B
widgets
MainUIActivity.java 2KB
MainFrameActivity.java 5KB
examples
RelativeLayoutActivity.java 430B
RelativeLayoutComplexActivity.java 3KB
TableLayoutActivity.java 424B
EditTextViewActivity.java 136B
LinearLayoutComplexActivity.java 452B
LinearLayoutActivity.java 426B
Linear_Table_LayoutComplexActivity.java 471B
TextViewActivity.java 1KB
bin
com
cmw
android
data
ListDataProvider$FowardAction.class 260B
ListDataProvider.class 4KB
TreeDataProvider.class 4KB
ListDataProvider$1.class 1KB
DataProvider.class 304B
model
TreeElement.class 4KB
ui
extend
MarqueeTextView.class 483B
widgets
MainUIActivity.class 3KB
MainFrameActivity.class 3KB
R$color.class 537B
R.class 619B
R$layout.class 904B
R$attr.class 355B
examples
LinearLayoutActivity.class 569B
TableLayoutActivity.class 566B
EditTextViewActivity.class 355B
RelativeLayoutActivity.class 575B
Linear_Table_LayoutComplexActivity.class 611B
RelativeLayoutComplexActivity.class 3KB
TextViewActivity.class 1KB
RelativeLayoutComplexActivity$TabListener.class 2KB
LinearLayoutComplexActivity.class 590B
MainFrameActivity$TreeViewAdapter$ViewHolder.class 804B
R$id.class 2KB
R$string.class 1KB
MainUIActivity$1.class 2KB
MainFrameActivity$TreeViewAdapter$1.class 2KB
R$drawable.class 533B
MainFrameActivity$TreeViewAdapter.class 4KB
classes.dex 24KB
android_examples.apk 41KB
resources.ap_ 27KB
.classpath 280B
assets
default.properties 364B
.project 852B
gen
com
cmw
android
widgets
R.java 5KB
共 77 条
- 1
资源评论
yxkfw
- 粉丝: 76
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功