ExpandableListView始终展开不收缩
来源:互联网 发布:客户达软件下载 编辑:程序博客网 时间:2024/05/22 06:33
效果图:
此界面是用expandablelistview实现的
直接上代码:
package com.example.administrator.expandlistviewdemo;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.view.Menu;import android.view.MenuItem;import android.widget.ExpandableListView;import android.widget.Toast;import java.util.ArrayList;import java.util.Map;import java.util.TreeMap;/** * Created by dawn on 2017/11/20. */public class MainActivity extends AppCompatActivity { private ExpandableListView expandableListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.content_main); expandableListView=findViewById(R.id.expandlistview); String[] keyArr={"A","B"}; Map<String, ArrayList<ContactsInfo>> map=new TreeMap<>(); ArrayList<ContactsInfo> slist=new ArrayList<>(); slist.add(new ContactsInfo("系统")); slist.add(new ContactsInfo("系统1")); map.put("A",slist); ArrayList<ContactsInfo> slist1=new ArrayList<>(); slist1.add(new ContactsInfo("蒲公英")); slist1.add(new ContactsInfo("苍耳种子")); map.put("B",slist1); ContactsInfoAdapter adapter=new ContactsInfoAdapter(keyArr,map,this); expandableListView.setAdapter(adapter); for (int i = 0; i < keyArr.length; i++) { expandableListView.expandGroup(i); } expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView expandableListView, View view, int i, long l) { return true; } }); adapter.setConnectListtener(new ContactsInfoAdapter.ConnectListtener() { @Override public void getSelectConnect(ContactsInfo m) { Toast.makeText(MainActivity.this,m.getName(),Toast.LENGTH_SHORT).show(); } }); }}
ContactsInfoAdapter的代码:
package com.example.administrator.expandlistviewdemo;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseExpandableListAdapter;import android.widget.RelativeLayout;import android.widget.TextView;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.Set;import java.util.TreeSet;/** * Created by dawn on 2017/11/20. */public class ContactsInfoAdapter extends BaseExpandableListAdapter { private String[] keyArr; private Map<String, ArrayList<ContactsInfo>> map; private Context mContex; private ConnectListtener mlisttener; public void setConnectListtener(ConnectListtener mlisttener) { this.mlisttener = mlisttener; } public ContactsInfoAdapter(String[] keyArr, Map<String, ArrayList<ContactsInfo>> map, Context mContext) { this.keyArr = keyArr; this.map = map; this.mContex = mContext; } // 获得某个父项的某个子项 @Override public ContactsInfo getChild(int parentPos, int childPos) { return map.get(keyArr[parentPos]).get(childPos); } // 获得父项的数量 @Override public int getGroupCount() { return keyArr.length; } // 获得某个父项的子项数目 @Override public int getChildrenCount(int parentPos) { return map.get(keyArr[parentPos]).size(); } // 获得某个父项 @Override public String getGroup(int parentPos) { return keyArr[parentPos]; } // 获得某个父项的id @Override public long getGroupId(int parentPos) { return parentPos; } // 获得某个父项的某个子项的id @Override public long getChildId(int parentPos, int childPos) { return childPos; } // 按函数的名字来理解应该是是否具有稳定的id,这个方法目前一直都是返回false,没有去改动过 @Override public boolean hasStableIds() { return false; } // 获得父项显示的view @Override public View getGroupView(int parentPos, boolean b, View view, ViewGroup viewGroup) { if (view == null) { view = LayoutInflater.from(mContex).inflate(R.layout.item_character, null); } TextView text = (TextView) view.findViewById(R.id.character); text.setText(keyArr[parentPos]); return view; } // 获得子项显示的view @Override public View getChildView(int parentPos, int childPos, boolean b, View view, ViewGroup viewGroup) { if (view == null) { view = LayoutInflater.from(mContex).inflate(R.layout.item_contact, null); } RelativeLayout mLinearLayout = (RelativeLayout) view.findViewById(R.id.contact_lin); TextView mTextView = (TextView) view.findViewById(R.id.contact_name); final ContactsInfo mInfo = map.get(keyArr[parentPos]).get(childPos); mTextView.setText(mInfo.getName()); mLinearLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mlisttener != null) { mlisttener.getSelectConnect(mInfo); } } }); return view; } // 子项是否可选中,如果需要设置子项的点击事件,需要返回true @Override public boolean isChildSelectable(int i, int i1) { return false; } public interface ConnectListtener { void getSelectConnect(ContactsInfo m); }}
接下来是布局文件
item_contact.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout android:id="@+id/contact_lin" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" > <TextView android:id="@+id/contact_name" android:layout_width="match_parent" android:layout_height="wrap_content" /> </RelativeLayout>
item_character.xml
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" > <TextView android:id="@+id/character" android:layout_width="match_parent" android:layout_height="wrap_content" /></android.support.constraint.ConstraintLayout>MainActivity.class对应的布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ExpandableListView android:id="@+id/expandlistview" android:layout_width="match_parent" android:layout_height="wrap_content" android:groupIndicator="@color/colorPrimary" ></ExpandableListView> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv_total" android:text="1223" /></LinearLayout>
阅读全文
0 0
- ExpandableListView始终展开不收缩
- Android ExpandableListView的特殊使用——始终展开不收缩
- ExpandableListView的首次加载全部展开,并且点击Group不收缩、
- ExpandableListView的首次加载全部展开,并且点击Group不收缩、
- ExpandableListView的首次加载全部展开,并且点击Group不收缩
- ExpandableListView的首次加载全部展开,并且点击Group不收缩、
- ExpandableListView的首次加载全部展开,并且点击Group不收缩
- ExpandableListView的首次加载全部展开,并且点击Group不收缩
- ExpandableListView的首次加载全部展开,并且点击Group不收缩,去掉Group左边的箭头
- ExpandableListView的首次加载全部展开,并且点击Group不收缩
- ExpandableListView的首次加载全部展开,并且点击Group不收缩
- ExpandableListView展开收缩加动画效果
- 可展开(收缩)的列表ListView(ExpandableListView)
- Listview列表收缩与展开——ExpandableListView
- Android ExpandableListView列表全部展开与全部收缩
- 控制ExpandableListView某一项点击不展开
- ExpandableListView设置部分项不展开
- Android展开/收缩列表 ExpandableListView 每次只能有一个项目是展开的
- atitit 每季度日程表 每季度流程 v3 qaf.docx Ver history V2 add diary cyar data 3 cate V3 fix detail 3cate ,
- 使用annotationProcessor配置Butterknife
- Merge into使用详解-你Merge了没有
- c++ 控制台应用程序不显示dos界面
- python多线程抓取数据存入数据库的方法
- ExpandableListView始终展开不收缩
- Sublime 集成前端开发工具
- 指针的指针习题笔记
- 赌博游戏(C/python略)
- POJ1259:The Picnic(DP)
- Atitit.每年 日程表 年度 日常流程表 v1 raf.doc Ver history 00Cateitemimpdemo Diary yychk.. perdai u
- Unity Shader 学习笔记(16) 渲染纹理(Render Texture)
- Http Client 使用指南
- 如何修改sublime3代码注释颜色