可扩展的列表组件
来源:互联网 发布:7u分享网络官网 编辑:程序博客网 时间:2024/06/16 11:11
ExpandableListView(可扩展列表组件).ExpandableListView所显示的列表项应该有由ExpandableListAdapter提供。
实现ExpandableListAdapter的三种常见方式:
- 扩展BaseExpandableListAdapter 实现ExpandableListAdapter。
- 使用SimpleExpandableListAdapter将两个List集合包装成ExpandableListAdapter。
- 使用SimpleCursorTreeAdapter将Cursor中的数据包装成SimpleCursorTreeAdapter。
布局如下:
布局简单,后面的LinearLayout,TextView和ImageView是直接在代码中获取的<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.example.expandablelistview.MainActivity"> <ExpandableListView android:layout_width="match_parent" android:layout_height="match_parent" android:childDivider="@color/colorAccent" android:id="@+id/elistview" android:dividerHeight="2dp"> </ExpandableListView></LinearLayout>childDivider是指定各子列表项之间的分隔条
package com.example.expandablelistview;import android.content.Context;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class MyExpandableListView extends BaseExpandableListAdapter {//这里的Context是为了给MainActivity传数据的 private Context context; public MyExpandableListView(Context context) { this.context = context; } int[] image = new int[]{R.mipmap.kemic , R.mipmap.d, R.mipmap.abc}; String[] armTypes = new String[]{"科比", "霍祁君", "全智贤"}; String[][] arms = new String[][]{ {"凌晨四点的洛杉矶", "你的后仰没有酒", "我却醉的像条狗", "我的青春"}, {"羊驼王子", "霍霍", "需要人陪", "一首简单的歌"}, {"人生大赢家","气质女神","柔和","灵气"} }; //获取指定组位置,指定子列表项处的子列表项数据 @Override public Object getChild(int groupPosition, int childPosition) { return arms[groupPosition][childPosition]; } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public int getChildrenCount(int groupPosition) { return arms[groupPosition].length; } private TextView getTextView(){ AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,64); //注意这里context和this的区别 TextView textView = new TextView(context); textView.setLayoutParams(layoutParams); textView.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT); textView.setPadding(36,0,0,0); textView.setTextSize(20); return textView; } //该方法决定每个子选项的外观 @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { TextView textView=getTextView(); textView.setText(getChild(groupPosition,childPosition).toString()); return textView; } //获取指定组位置处的选项 @Override public Object getGroup(int groupPosition) { return armTypes[groupPosition]; } @Override public int getGroupCount() { return armTypes.length; } @Override public long getGroupId(int groupPosition) { return groupPosition; } //该方法决定每个组选项的外观 @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { LinearLayout linearLayout=new LinearLayout(context); linearLayout.setOrientation(LinearLayout.HORIZONTAL); ImageView images = new ImageView(context); images.setImageResource(image[groupPosition]); images.setMaxWidth(100); linearLayout.addView(images); TextView textView = getTextView(); textView.setText(getGroup(groupPosition).toString()); linearLayout.addView(textView); return linearLayout; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } @Override public boolean hasStableIds() { return true; }}
package com.example.expandablelistview;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.BaseExpandableListAdapter;import android.widget.ExpandableListView;public class MainActivity extends AppCompatActivity { private ExpandableListView expandableListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); expandableListView= (ExpandableListView) findViewById(R.id.elistview); MyExpandableListView expandableListViewAdapter=new MyExpandableListView(this); expandableListView.setAdapter(expandableListViewAdapter); }}
效果图如下:
所谓的可扩展就是点击图片时会显示刚开始隐藏在图片下的文字信息。当点击第一张图片时:
点击第二张:
点击第三张:
注意:context,this,MainActivity.this,getActivity()之间的用法
0 0
- 可扩展的列表组件
- 可扩展的列表组件(ExpandableListView)
- 可扩展的下拉列表—ExpandableListView
- 构建可扩展的Java图表组件
- 构建可扩展的Java图表组件
- 构建可扩展的Java图表组件
- 构建可扩展的Java图表组件
- ExpendableListView(可展开的列表组件)笔记
- 可展开的列表组件ExpandableListView
- 可展开的列表组件ExpandableListView
- 可展开的列表组件ExpandableListView
- ExpandableView(可展开的列表组件)
- ExpandableListView-可展开的列表组件
- 可展开的列表组件 ExpandableListview
- ExpandableListView--可展开的列表组件
- android 列表ListView和可扩展列表ExpandableListView的实现
- ExpandableListView可扩展的下拉列表简单的使用
- android ExpandableListView可扩展列表
- session多服务器共享的方案梳理
- 高德地图API
- Sql server基础
- struts2校验器验证表单避免无效sql查询
- HDFS 高可用,hdfs-site.xml 配置及说明,更详细参考官网
- 可扩展的列表组件
- 关于在myeclipse 2014中发布web service服务时的报错解决
- android studio 以及SO的关系
- linux - grep | cut
- APP启动白屏、黑屏的问题
- adb logcat 命令行用法
- 待完成任务 —— appearance意义及功能使用方法
- SQL多表连接查询
- terminal 的一些指令