- 浏览: 868268 次
- 性别:
- 来自: 上海
最新评论
-
waterflow:
感谢分享
简单的ChartDirector生成图表例子 -
YQuite:
写到最后一种文件才看到这个,洼的一声哭了出来 - - !
java简单解析docx、pptx、xlsx文档 -
q394469902:
Android通过selector改变界面状态 -
db6623919:
直接粘贴别人帖子还是英文的,有意思?
实现RTSP协议的简单例子 -
ykou314:
请问下,这些超级命令,是否需要android root权限,尤 ...
Android系统在超级终端下必会的命令大全(七)
先上图再说,实现效果如下图,选项可多少可变化。
BaseExpandableListAdapter实现
import java.util.List; import android.content.Context; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.TextView; import com.iwidsets.clear.manager.R; import com.iwidsets.clear.manager.adapter.BrowserInfo; public class ClearExpandableListAdapter extends BaseExpandableListAdapter { class ExpandableListHolder { ImageView appIcon; TextView appInfo; CheckBox appCheckBox; } private Context context; private LayoutInflater mChildInflater; private LayoutInflater mGroupInflater; private List<GroupInfo> group; public ClearExpandableListAdapter(Context c, List<GroupInfo> group) { this.context = c; mChildInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); mGroupInflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.group = group; } public Object getChild(int childPosition, int itemPosition) { return group.get(childPosition).getChild(itemPosition); } public long getChildId(int childPosition, int itemPosition) { return itemPosition; } @Override public int getChildrenCount(int index) { return group.get(index).getChildSize(); } public Object getGroup(int index) { return group.get(index); } public int getGroupCount() { return group.size(); } public long getGroupId(int index) { return index; } public View getGroupView(int position, boolean flag, View view, ViewGroup parent) { ExpandableListHolder holder = null; if (view == null) { view = mGroupInflater.inflate( R.layout.browser_expandable_list_item, null); holder = new ExpandableListHolder(); holder.appIcon = (ImageView) view.findViewById(R.id.app_icon); view.setTag(holder); holder.appInfo = (TextView) view.findViewById(R.id.app_info); holder.appCheckBox = (CheckBox) view .findViewById(R.id.app_checkbox); } else { holder = (ExpandableListHolder) view.getTag(); } GroupInfo info = this.group.get(position); if (info != null) { holder.appInfo.setText(info.getBrowserInfo().getAppInfoId()); Drawable draw = this.context.getResources().getDrawable( info.getBrowserInfo().getImageId()); holder.appIcon.setImageDrawable(draw); holder.appCheckBox.setChecked(info.getBrowserInfo().isChecked()); } return view; } public boolean hasStableIds() { return false; } public boolean isChildSelectable(int arg0, int arg1) { return false; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ExpandableListHolder holder = null; if (convertView == null) { convertView = mChildInflater.inflate( R.layout.browser_expandable_list_item, null); holder = new ExpandableListHolder(); holder.appIcon = (ImageView) convertView .findViewById(R.id.app_icon); convertView.setTag(holder); holder.appInfo = (TextView) convertView.findViewById(R.id.app_info); holder.appCheckBox = (CheckBox) convertView .findViewById(R.id.app_checkbox); } else { holder = (ExpandableListHolder) convertView.getTag(); } BrowserInfo info = this.group.get(groupPosition) .getChild(childPosition); if (info != null) { holder.appInfo.setText(info.getAppInfoId()); Drawable draw = this.context.getResources().getDrawable( info.getImageId()); holder.appIcon.setImageDrawable(draw); holder.appCheckBox.setChecked(info.isChecked()); } return convertView; } }
要想让child获得焦点,只在改
public boolean isChildSelectable(int arg0, int arg1) { return true; }
browser_expandable_list_item.xml 用于显示每一个ITEM的XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:minHeight="40px" android:layout_gravity="center_vertical"> <CheckBox android:id="@+id/app_checkbox" android:focusable="false" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="35px" android:checked="true"/> <ImageView android:id="@+id/app_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" /> <TextView android:id="@+id/app_info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="?android:attr/textColorPrimary" android:paddingLeft="3px" android:layout_gravity="center_vertical" /> </LinearLayout>
browserlayout.xml 用于显示整个界面
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <ExpandableListView android:id="@+id/appList" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" /> <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:paddingLeft="4dip" android:paddingRight="4dip" android:paddingBottom="1dip" android:paddingTop="5dip" android:background="@android:drawable/bottom_bar" android:id="@+id/app_footer"> <Button android:layout_weight="1" android:id="@+id/btn_export" android:layout_width="0dip" android:layout_height="fill_parent" android:text="@string/clear"></Button> <Button android:layout_weight="1" android:id="@+id/btn_sel_all" android:layout_width="0dip" android:layout_height="fill_parent" android:text="select_all"></Button> <Button android:layout_weight="1" android:id="@+id/btn_desel_all" android:layout_width="0dip" android:layout_height="fill_parent" android:text="deselect_all"></Button> </LinearLayout> </LinearLayout>
BrowserInfo用于提供一个项的信息
public class BrowserInfo { private int appInfoId; private int imageId; private boolean checked; public BrowserInfo(int appInfoId, int imageId, boolean checked) { this.appInfoId = appInfoId; this.imageId = imageId; this.checked = checked; } public boolean isChecked() { return checked; } public void setChecked(boolean checked) { this.checked = checked; } public int getAppInfoId() { return appInfoId; } public void setAppInfoId(int appInfoId) { this.appInfoId = appInfoId; } public int getImageId() { return imageId; } public void setImageId(int imageId) { this.imageId = imageId; } }
GroupInfo 用于显示一个组的信息
import java.util.List; public class GroupInfo { private BrowserInfo group; private List<BrowserInfo> child; public GroupInfo(BrowserInfo group, List<BrowserInfo> child) { this.group = group; this.child = child; } public void add(BrowserInfo info){ child.add(info); } public void remove(BrowserInfo info){ child.remove(info); } public void remove(int index){ child.remove(index); } public int getChildSize(){ return child.size(); } public BrowserInfo getChild(int index){ return child.get(index); } public BrowserInfo getBrowserInfo() { return group; } public void setBrowserInfo(BrowserInfo group) { this.group = group; } public List<BrowserInfo> getChild() { return child; } public void setChild(List<BrowserInfo> child) { this.child = child; } }
ClearBrowserActivity 最后就是把要显示的内容显示出来的。
public class ClearBrowserActivity extends Activity implements ExpandableListView.OnGroupClickListener,ExpandableListView.OnChildClickListener{ private List<GroupInfo> group; private ClearExpandableListAdapter listAdapter = null; private ExpandableListView appList; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.browserlayout); appList = (ExpandableListView) findViewById(R.id.appList); init(); BrowserInfo browsingHistoryParents = newBrowserInfo( R.string.browsinghistory, R.drawable.browser_image,true); List<BrowserInfo> browsingHistoryChild = new ArrayList<BrowserInfo>(); BrowserInfo browser = newBrowserInfo(R.string.browser, R.drawable.browser_image, true); browsingHistoryChild.add(browser); BrowserInfo operaClear = newBrowserInfo(R.string.opera_clear, R.drawable.browser_image,true); browsingHistoryChild.add(operaClear); BrowserInfo firefoxClear = newBrowserInfo(R.string.firefox_clear, R.drawable.browser_image,true); browsingHistoryChild.add(firefoxClear); BrowserInfo ucwebClear = newBrowserInfo(R.string.ucweb_clear, R.drawable.browser_image,false); browsingHistoryChild.add(ucwebClear); GroupInfo browserGroup = new GroupInfo(browsingHistoryParents, browsingHistoryChild); addGroup(browserGroup); listAdapter = new ClearExpandableListAdapter(this, group); appList.setOnChildClickListener(this); appList.setOnGroupClickListener(this); appList.setAdapter(listAdapter); } private void init() { group = new ArrayList<GroupInfo>(); } private void addGroup(GroupInfo info) { group.add(info); } private static BrowserInfo newBrowserInfo(int infoId, int imageId,boolean checked) { return new BrowserInfo(infoId, imageId,checked); } @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { return false; } @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { return false; } }
评论
5 楼
Zoeh-ruan
2010-07-13
请问"在一个类里写一个全局的如SharedPreferences sharedPreferences = activity.getSharedPreferences("SHRAREDNAME",Context.MODE_PRIVATE);"
意思是像下面的CODE一样另外写一个class去抓值,然后在isChecked()去呼叫吗?
另一个问题就是除了在ClearBrowserActivity里面使用去SharedPreferences settings=getSharedPreferences("Preference_bool",Context.MODE_PRIVATE);之外,
在其它的JAVA档里使用上面的CODE开启模拟器之后,都会runtime exception,一直不知道为什么 麻烦了
意思是像下面的CODE一样另外写一个class去抓值,然后在isChecked()去呼叫吗?
public class SharedPreference extends Activity{ public boolean getPref(String value){ SharedPreferences settings=getSharedPreferences("Preference_bool",0); boolean b = settings.getBoolean("a01",false); return b; } } public boolean isChecked() { SharedPreference test = new SharedPreference(); checked = test.getPref(value); Log.d("isC","isc :"+checked); return checked; }
另一个问题就是除了在ClearBrowserActivity里面使用去SharedPreferences settings=getSharedPreferences("Preference_bool",Context.MODE_PRIVATE);之外,
在其它的JAVA档里使用上面的CODE开启模拟器之后,都会runtime exception,一直不知道为什么 麻烦了
4 楼
fonter
2010-07-13
Zoeh-ruan 写道
您好
不好意思
我了解了做法的意思 但是一直出现错误
"checked保存在SharedPreferences"
我在 BrowserInfo里getSharedPreferences总是出现错误
不知道能不能给点更详细的方法呢?
谢谢
不好意思
我了解了做法的意思 但是一直出现错误
"checked保存在SharedPreferences"
我在 BrowserInfo里getSharedPreferences总是出现错误
不知道能不能给点更详细的方法呢?
谢谢
你在BrowserInfo都有一个SharedPreferences吗?如果是这样,就错了,你可在一个类里写一个全局的如SharedPreferences sharedPreferences = activity.getSharedPreferences("SHRAREDNAME",Context.MODE_PRIVATE); 然后可用一个for把他的唯一标识做为名,如putBoolean("name",true) 这样就做保存到SharedPreferences了,读的话也差不多.
3 楼
Zoeh-ruan
2010-07-13
您好
不好意思
我了解了做法的意思 但是一直出现错误
"checked保存在SharedPreferences"
我在 BrowserInfo里getSharedPreferences总是出现错误
不知道能不能给点更详细的方法呢?
谢谢
不好意思
我了解了做法的意思 但是一直出现错误
"checked保存在SharedPreferences"
我在 BrowserInfo里getSharedPreferences总是出现错误
不知道能不能给点更详细的方法呢?
谢谢
2 楼
fonter
2010-07-12
Zoeh-ruan 写道
请问
这个CODE收回再展开之后
要如何保存checkbox的状态呢?
不知道为什么下面那三个按钮也是没有反应呢@ @ ?
这个CODE收回再展开之后
要如何保存checkbox的状态呢?
不知道为什么下面那三个按钮也是没有反应呢@ @ ?
1、下面三个按钮没做处理事件啊。。这个代码只是我的最初的,所以一些CODE还是得自己加;
2、我是这样做的,在BrowserInfo再加一个字段为value,这个value为唯一的,把checked保存在SharedPreferences中,用putBoolean。
1 楼
Zoeh-ruan
2010-07-12
请问
这个CODE收回再展开之后
要如何保存checkbox的状态呢?
不知道为什么下面那三个按钮也是没有反应呢@ @ ?
这个CODE收回再展开之后
要如何保存checkbox的状态呢?
不知道为什么下面那三个按钮也是没有反应呢@ @ ?
发表评论
-
One省电卫士 - Android内核级省电App
2013-02-03 19:32 3569One省电卫士是一款androi ... -
(转)Windows下Eclipse集成Cygwin配置Android NDK环境编译JNI库程序步骤
2012-05-09 16:11 5597前戏准备: 1. 搭建Eclipse Android ... -
Android-Task和Activity相关的一些属性[转]
2011-08-23 09:21 3058android:allowTaskReparenting用来标 ... -
GC_FOR_MALLOC
2011-07-01 11:44 2292GC_FOR_MALLOC means that the ... -
ProgressBar 样式
2011-05-01 23:06 3165The four attributes that you me ... -
ShellCommand.java
2011-04-07 19:38 1582/** * ShellCommand.java runs co ... -
Android任务管理终极发布AndTask 3.1(安安任务管理)
2011-04-04 07:50 1658安安任务管理是一款android任务管理软件,可通过手动或自动 ... -
AndMemory 安安内存管理 1.1 发布
2011-03-08 23:42 1897AndMemory is an android memory ... -
预测今年将是android应用普及年和android安全年
2011-03-06 21:53 1972经过去年一年的实践,预测今年将是android应用 ... -
Android之混淆(Obfuscate)
2011-03-06 16:07 2898下载Android安安软件请到:http://code. ... -
Android内存信息
2011-02-21 21:40 2164下载Android安安软件请到:http://code.goo ... -
How to decompile .dex file on Android(转)如何反编译.dex文件
2011-02-20 11:34 2884下载Android安安软件请到:http://code.goo ... -
(转)android JNI 学习笔记1
2011-02-17 10:08 2802下载Android安安软件请到:http://code.goo ... -
(转)Android内存管理机制之一:lowmemory killer
2011-02-15 15:00 2633下载Android安安软件请到 ... -
(转)内存管理Memory Management in Android
2011-02-14 23:31 4188下载Android安安软件请到:http://code.goo ... -
转-Andriod被排出Linux内核的原因
2011-01-12 22:36 1533下载Android安安软件请到:http://code.goo ... -
Ubuntu 开启 Android 的 USB 调试模式
2011-01-06 20:51 7787在Android开发者网站中, 它提供了在 Ubuntu 下实 ... -
解决Conversion to Dalvik format failed: Unable to execute dex: null
2010-12-12 23:17 2403解决Conversion to Dalvik format f ... -
AndBox发布最新版AndRootFile(安安文件管理) 3.0 beta 版
2010-11-27 09:56 1774The ultimate file manager for r ... -
(转)区分Activity的四种加载模式
2010-11-20 10:09 1784在多Activity开发中,有可能是自己应用之间的Activi ...
相关推荐
在Android开发中,`BaseExpandableListAdapter`是一个用于创建可扩展列表视图(ExpandableListView)的数据适配器。这个适配器允许开发者构建复杂的列表结构,其中包含可展开和折叠的组(groups),每个组内又包含多...
`MonoAndroid-Writing-ExpandableListView-amd.pdf`可能是一份详细的教程或指南,建议阅读以获取更深入的理解。 总的来说,使用C#在MonoAndroid环境中实现`ExpandableListView`需要理解Android视图系统、适配器模式...
在"带有Android自定义适配器的Android ExpandablelistView教程"中,我们将深入探讨如何有效地利用`ExpandableListView`。 首先,理解`ExpandableListView`的基本工作原理是关键。它由两部分组成:父条目(Group)和...
本教程将详细介绍如何在Android应用中使用ExpandableListView来创建类似QQ好友管理的功能。 **1. ExpandableListView的基本概念** ExpandableListView是ListView的一个扩展,它支持分组和子项的概念。每个分组都...
`Android expandableList扩展列表.rar`文件中的内容可能包含了如何在Android应用中实现和优化ExpandableListView的详细教程。 首先,让我们了解一下ExpandableListView的基本用法。在Android中,使用...
本教程将深入探讨如何通过扩展`BaseExpandableListAdapter`来实现自定义的`ExpandableAdapter`。 首先,`BaseExpandableListAdapter`是Android提供的一个抽象类,它是`ExpandableListAdapter`接口的默认实现,提供...
本教程将详细介绍如何使用ExpandableListView组件来实现一个Android时间轴效果,并支持标题置顶功能。 首先,我们需要了解ExpandableListView。它是Android SDK提供的一种可扩展的列表视图,允许你显示分组数据,每...
我们还需要为ListView创建一个Adapter,继承自BaseExpandableListAdapter,重写其方法以填充数据。 在Adapter中,我们需要注意以下几点: 1. `getGroupCount()`:返回分组的数量,即字母表的长度。 2. `...
"Android expandableList扩展列表"可能是相关的代码示例或者教程文档,帮助开发者更好地理解和实践`ExpandableListView`的使用。 总之,`ExpandableListView`是Android中处理层级数据的强大工具,通过深入学习和...
在Android中,这通常是通过继承`BaseExpandableListAdapter`实现的。适配器需要重写以下几个关键方法: 1. `getGroupCount()`:返回父组的数量。 2. `getChildrenCount(int groupPosition)`:返回给定父组下的子项...
这个"Android代码-expandableList扩展列表.zip"压缩包很可能包含了一个关于如何使用ExpandableListView的示例项目或教程。 在Android的ExpandableListView中,数据模型通常由两个类组成:一个表示父组(Group)的类...
本教程将深入探讨如何在Android应用中使用ExpandableListView及其相关的知识点。 1. **ExpandableListView介绍** ExpandableListView是Android提供的一个可展开的列表视图,它继承自ListView。与普通ListView不同...
4.6.10、BaseExpandableListAdapter例 88 4.6.11、列表视图(List View) 96 4.6.12、NoteList 99 4.7、TAB与TABHOST 106 4.8、RATINGBAR 110 4.8.1、例一 110 4.8.2、例二 112 4.9、DATE/TIME SET 115 4.9.1、...
本教程将详细介绍如何在Android应用中实现一个三级菜单的`ExpandableListView`。 首先,`ExpandableListView`的核心特性在于它支持子项的展开和收起,这对于展示多级菜单非常实用。在Android的`ExpandableListView`...
本教程将深入讲解如何在Android应用中使用`ExpandableListView`。 首先,我们需要在布局文件中添加`ExpandableListView`。例如,在 `main.xml` 文件中,我们创建了一个`LinearLayout` 并在其内部嵌入了一个`...
这个压缩包文件"安卓Android源码——自定义适配器的ExpandableListView.zip"包含了一份关于如何在Android应用中自定义适配器以实现`ExpandableListView`功能的详细教程和示例代码。 首先,我们要理解`...
在这个“安卓开发-android基于自定义适配器的ExpandableListView.zip”压缩包中,我们很可能会找到关于如何实现自定义适配器以驱动ExpandableListView的示例代码和教程。 首先,让我们理解ExpandableListView的工作...
- 自定义适配器需要扩展BaseExpandableListAdapter,并重写相关方法,如getGroupCount()、getChildrenCount()、getGroupView()和getChildView()。在getGroupView()中,我们设置父项的视图,而在getChildView()中...