Android ExpandableListView 使用实例
API中类继承关系:
ExpandableListView
extends ListView
java.lang.Object | ||||||
↳ | android.view.View | |||||
↳ | android.view.ViewGroup | |||||
↳ | android.widget.AdapterView<T extends android.widget.Adapter> | |||||
↳ | android.widget.AbsListView | |||||
↳ | android.widget.ListView | |||||
↳ | android.widget.ExpandableListView |
样例:
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/home_bg"
>
<include layout="@layout/top_bar" />
<View
android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="#FF789977"
/>
<ExpandableListView android:id="@+id/expandablelist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000"
android:divider="@drawable/dotted_line"
android:layout_weight="1"
android:childIndicator="@drawable/pic"
/>
</LinearLayout>
类:
public class mActivity extends Activity {
private ListView list ;
private ExpandableListView expandlist;
private List<Map<String,Object> > items;
private String names[] = {"Rolling in the deep","Apologize","仙剑问情","依然爱你","涛声依旧","Wannable","为爱痴狂","洋葱"};
private String artists[]= {"Adele","Timbaland ","萧人凤","王力宏","李行亮","SpiceGirls","金志文","平安"};
private String times[] = {"03:49","2:00","4:13","4:06","5:57","3:20","2:36","2:36"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main3);
expandlist = (ExpandableListView)findViewById(R.id.expandablelist);
/* prepareData();
list = (ListView)findViewById(R.id.list);
SimpleAdapter adapter = new SimpleAdapter(this,items,R.layout.item,
new String[]{"name","artist","time"}, new int[]{ R.id.musicName,R.id.artist,R.id.time});
list.setAdapter(adapter);*/
expandlist.setAdapter(adapter);
//设置item点击的监听器
expandlist.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Toast.makeText(
mActivity.this,
"我点击了" + adapter.getChild(groupPosition, childPosition),
Toast.LENGTH_SHORT).show();
return false;
}
});
}
ExpandableListAdapter adapter = new BaseExpandableListAdapter(){
//设置组视图的图片
int[] logos = new int[] { R.drawable.liuhuan, R.drawable.jikejunyi,R.drawable.pic};
//设置组视图的显示文字
private String[] generalsTypes = new String[] { "刘欢", "吉克隽逸", "蔡依林" };
//子视图显示文字
private String[][] generals = new String[][] {
{ "凤凰于飞", "弯弯的月亮", "千万次的问", "从头再来" },
{ "彩色的黑", "Halo", "不要怕" },
{ "看我72变", "倒带", "舞娘" }
};
private String times[][] ={ {"2:36","4:06","3:25","2:56"},{"2:36","4:06","3:25"},{"2:36","4:06","3:25"}};
private String counts[] = {"58首","46首","70首"};
//子视图图片
public int[][] generallogos = new int[][] {
{ R.drawable.kafei, R.drawable.kafei,
R.drawable.kafei, R.drawable.kafei
},
{ R.drawable.kafei, R.drawable.kafei,
R.drawable.kafei} ,
{ R.drawable.kafei, R.drawable.kafei,
R.drawable.kafei
}
};
//自定义textview,用于显示文字信息
TextView getTextView() {
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, 64);
TextView textView = new TextView(
mActivity.this);
textView.setLayoutParams(lp);
textView.setGravity(Gravity.CENTER_VERTICAL);
textView.setPadding(66, 0, 0, 0);
textView.setTextSize(20);
textView.setTextColor(Color.BLACK);
return textView;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return generals[groupPosition][childPosition];
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
LinearLayout ll = new LinearLayout( mActivity.this);
ll.setOrientation(0);
ImageView generallogo = new ImageView( mActivity.this);
generallogo.setImageResource(generallogos[groupPosition][childPosition]);
// ll.addView(generallogo);
TextView textView = getTextView();
textView.setText(getChild(groupPosition, childPosition).toString());
TextView timecount = getTextView();
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
timecount.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT) ;
timecount.setLayoutParams(lp);
timecount.setText(times[groupPosition][childPosition]);
ll.addView(textView);
ll.addView(timecount);
return ll;
}
@Override
public int getChildrenCount(int groupPosition) {
return generals[groupPosition].length;
}
@Override
public Object getGroup(int groupPosition) {
return generalsTypes[groupPosition];
}
@Override
public int getGroupCount() {
return generalsTypes.length;
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
LinearLayout ll = new LinearLayout( mActivity.this);
ll.setOrientation(0);
// ImageView logo = new ImageView(mActivity.this);
// logo.setImageResource(logos[groupPosition]);
// logo.setMaxHeight(20);
// logo.setMaxWidth(20);
// logo.setPadding(50, 0, 0, 0);
// ll.addView(logo);
TextView textView = getTextView();
textView.setTextColor(Color.BLACK);
textView.setText(getGroup(groupPosition).toString());
TextView textViewcount = getTextView();
textViewcount.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT);
textViewcount.setPadding(0, 0, 3, 0);
// textViewcount.
textViewcount.setText(counts[groupPosition]);
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
textViewcount.setLayoutParams(lp);
ll.addView(textView);
ll.addView(textViewcount);
return ll;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
};
}
效果图:
Android ExpandableListView 使用实例相关推荐
- 技术实践 | Android Flutter 多实例实践
导读:Flutter CLI 工具支持将 Flutter Module 打包成 Android AAR 包以供外部依赖使用,即 Flutter AAR.在一个没有使用 Flutter 技术栈的 And ...
- Android JNI简单实例(android 调用C/C++代码)
转载自 xiechengfa 最终编辑 xiechengfa Android JNI简单实例关键字: android.jni Android的jni实例 android 的应用程序(Dalvik VM ...
- OpenCV android sdk配置OpenCV android NDK开发实例
OpenCV android sdk配置OpenCV android NDK开发实例 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/det ...
- android 滑动拦截,Android 滑动拦截实例代码解析
废话不多说了,直接给大家贴代码了,具体代码如下所示: package demo.hq.com.fby; import android.content.Context; import android.u ...
- Android串口通信实例分析【附源码】
Android 串口通信实例分析,用的时开源的android-serialport-api 这个是用android ndk实现的串口通信,我把他做了一个简化,适合于一般的程序的串口通信移植,欢迎拍砖- ...
- android远程linux命令,测试可用的Android远程语音识别实例
测试可用的Android远程语音识别实例: 代码下载在: 相关文件下载在Linux公社的1号FTP服务器里,下载地址: 用户名:www.linuxidc.com 密码:www.muu.cc 在 201 ...
- Android Hello World 实例【TODO】
Table of Contents Android Hello World 实例 创建 Android 应用 Android应用程序剖析 主要活动文件 Manifest文件 Strings 文件 R ...
- android expandablelistview横向,Android ExpandableListView使用小结(二)
在上一篇Android ExpandableListView使用小结(一)的介绍中,我们学习了 ExpandableListView 的使用方法,学习了自定义适配器,为列表选项设置监听事件.想必大家都 ...
- Android ExpandableListView示例教程
Welcome to Android ExpandableListView Example Tutorial. In this tutorial we'll implement an Expandab ...
最新文章
- Drupal7 将到2021年11月结束支持,请注意升级
- Tensorflow MNIST浅层神经网络的解释和答复
- .NET MVC对接POLYV——HTML5播放器播放加密视频
- 《系统集成项目管理工程师》必背100个知识点-62采购管理
- zcmu-1181(大数相加)
- 构成子网与构成超网的分析
- GDB动态库搜索路径
- spring里restTemplate向目的URL发送post请求
- [Offer收割]编程练习赛12 题目1 : 歌德巴赫猜想
- 求 逆矩阵 公式推导
- 加载行为:未加载用户已选择禁用宏
- 2019下半年软件设计师下午题
- Android手机便携式wifi的使用及无线数据传输(主要针对XP系统)
- Echart图实现tooltips循环轮播(方法)
- JUC -- 辅助类
- 小学计算机课教师教学笔记,小学信息技术课老师教育教学随笔
- 可口可乐启示录(2):如何不带脏字的“怼”竞争对手?【姜太公公】
- 信息系统项目管理师必背核心考点(四十)干系人管理
- Spring的Tomcat服务关闭后,Quartz进程无法正常关闭,出现内存泄露
- 黑帽SEO的常见操作手法解析