ExpandableListView的使用以及更换前边的图片
来源:互联网 发布:sql查询前10条记录 编辑:程序博客网 时间:2024/06/05 16:49
ExpandableListView是一个可展开的列表组件,在这里我就说下他的用法以及一些使用的问题
首先放上程序的效果图,请原谅我不会制作动态图
下来就直接上代码
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_coupon__package); ViewUtils.inject(this); //初始化数据 initData(); coupon_package_lv.setAdapter(new CouPon_Package_LV_Adapter(parentList,map,this)); //设置默认打开 for(int i =0;i<parentList.size();i++){ coupon_package_lv.expandGroup(i); } } private void initData() { //父条目数据 parentList = new ArrayList<>(); parentList.add("红包抵用卷"); parentList.add("加息劵"); parentList.add("折扣卷"); parentList.add("返现卷"); //子条目数据 map = new HashMap<>(); List<String> itemList = new ArrayList<>(); itemList.add("1"); itemList.add("2"); map.put(parentList.get(0),itemList); List<Integer> itemList1 = new ArrayList<>(); itemList1.add(1); itemList1.add(2); map.put(parentList.get(1),itemList1); }
xml里面的代码
<ExpandableListView android:id="@+id/coupon_package_lv" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="8dp" android:groupIndicator="@null" android:childDivider="@color/white" />
- android:groupIndicator=”@null”去掉ExpandableListView每个条目前面的箭头,为什么要去掉呢是因为我觉得Android默认的不好看想换掉,后面我会讲怎么换掉以及换掉的方法,所以别着急慢慢看下去
- android:childDivider=”@color/white”设置每个字条目分割线
- 在这里我在添加一个就是如果不想要分割线大可以试试小面的属性
android:divider=”@null”我这里设置的分割线为空
adapter中的代码不废话直接上代码
package com.jiun.xiaqi.recode.adapter;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseExpandableListAdapter;import android.widget.ExpandableListAdapter;import android.widget.ImageView;import android.widget.TextView;import com.jiun.xiaqi.recode.R;import com.jiun.xiaqi.recode.activity.MineCoupons;import org.w3c.dom.Text;import java.util.HashMap;import java.util.List;/** * Created by as on 2017/4/18. */public class CouPon_Package_LV_Adapter extends BaseExpandableListAdapter { private List<String> parentList; private HashMap<String,List<?extends Object>> map; private Context context; public CouPon_Package_LV_Adapter(List<String> parentList, HashMap<String,List<?extends Object>> map, Context context) { this.parentList = parentList; this.map = map; this.context = context; } //父条目的个数 @Override public int getGroupCount() { return parentList.size(); } //子条目的个数 @Override public int getChildrenCount(int groupPosition) { return map !=null && map.get(parentList.get(groupPosition)) !=null?map.get(parentList.get(groupPosition)).size():0; } //父条目 @Override public Object getGroup(int groupPosition) { return parentList.size()>0?parentList.get(groupPosition):null; } //子条目 @Override public Object getChild(int groupPosition, int childPosition) { return map !=null && map.get(parentList.get(groupPosition)) !=null?map.get(parentList.get(groupPosition)).get(childPosition):null; } //父条目Id可以直接返回groupPosition @Override public long getGroupId(int groupPosition) { return groupPosition; } //子条目Id可以直接返回groupPosition @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public boolean hasStableIds() { return true; } //父条目布局 @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View inflate = LayoutInflater.from(context).inflate(R.layout.coupon_package_parent_item, parent, false); View parent_close =inflate.findViewById(R.id.parent_close); View parent_show =inflate.findViewById(R.id.parent_show); TextView parent_title = (TextView) inflate.findViewById(R.id.parent_title); ImageView parent_img = (ImageView) inflate.findViewById(R.id.parent_img); parent_title.setText(parentList.get(groupPosition)); if(isExpanded){ parent_close.setVisibility(View.GONE); parent_show.setVisibility(View.VISIBLE); }else { parent_close.setVisibility(View.VISIBLE); parent_show.setVisibility(View.GONE); } if(groupPosition ==0){ parent_img.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(context, MineCoupons.class); context.startActivity(intent); ((Activity)(context)).overridePendingTransition(R.anim.activity_start,0); } }); } return inflate; } //子条目布局 @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { if(groupPosition==0) { if(map !=null) { convertView = LayoutInflater.from(context).inflate(R.layout.coupons_listview_item, parent, false); } }else if(groupPosition ==1){ if(map !=null) { convertView = LayoutInflater.from(context).inflate(R.layout.redpacket_item, parent, false); } } return convertView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; }}
上面有注释可以看注释很简单,其实和ListView的Adapter基本相同
然后说下其他东西
第一种方式
还记得android:groupIndicator=”@null”方法吗不记得了没关系在给你贴出使用它的地方
<ExpandableListView android:id="@+id/coupon_package_lv" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="8dp" android:groupIndicator="@null" android:childDivider="@color/white" />
android:groupIndicator=”@null”这里他的参数是@null没错就是将它的样式设置为空,这句也就是在设置默认的箭头的我们可以给他设置Drawable
我贴出如果需要给他设置的Drawable的布局
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_expanded="true" android:drawable="@drawable/coupon_package_child_close"/><item android:state_expanded="false" android:drawable="@drawable/coupon_package_child_show"/></selector>
但这样设置是有问题的就是里面的图片会被压缩或者拉伸,设置之后一般不会得到我们想要的效果
第二种方式
.还记得android:groupIndicator=”@null”方法吗不记得了没关系在给你贴出使用它的地方
就是在Adapter里面通过
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)
方法给他设置布局这里面有一个参数 boolean isExpanded我们可以通过这个参数得到当前列表是展开还是关闭的我们就可以动态的改变图片得到我们想要的样式了
//父条目布局 @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View inflate = LayoutInflater.from(context).inflate(R.layout.coupon_package_parent_item, parent, false); View parent_close =inflate.findViewById(R.id.parent_close); View parent_show =inflate.findViewById(R.id.parent_show); TextView parent_title = (TextView) inflate.findViewById(R.id.parent_title); ImageView parent_img = (ImageView) inflate.findViewById(R.id.parent_img);//判断该类表是关闭状态还是打开状态进而动态改变前面的默认图片 if(isExpanded){ parent_close.setVisibility(View.GONE); parent_show.setVisibility(View.VISIBLE); }else { parent_close.setVisibility(View.VISIBLE); parent_show.setVisibility(View.GONE); } } return inflate; }
需要注意的是如果使用第二种方式android:groupIndicator=”@null”
属性一定要设置为@null
0 0
- ExpandableListView的使用以及更换前边的图片
- ExpandableListView以及BaseExpandableListAdapter的基本使用
- 可适配图片的ExpandableListView
- 写在找工作前边的
- ExpandableListView的使用以及信息的高亮显示
- ExpandableListView的使用
- ExpandableListView的使用
- Android ExpandableListView的使用
- Android ExpandableListView的使用
- 转载:ExpandableListView的使用
- ExpandableListView的使用
- expandablelistview的使用
- Android ExpandableListView的使用
- ExpandableListView组件的使用
- ExpandableListView的基本使用
- ExpandableListView的使用
- ExpandableListView的使用示例
- ExpandableListView的使用
- IMWeb训练营作业之todo
- Git上传代码到Coding,下载代码到本地步骤
- poj 1260 Pearls (dp)
- Unity5.3.5f1 与 VS2013 环境搭建配置
- Shiro简介
- ExpandableListView的使用以及更换前边的图片
- Mac搭建github-Page的Hexo免费个人博客
- 折线分割平面hdu2050
- 动态规划练习--19(最低通行费)
- Ubuntu 安装 JDK 7 / JDK8 的两种方式
- hexo + github pages 搭建个人博客
- 折线分割平面hdu2050
- 正则化原理
- 二、swift3.0常量和变量+流程控制