Android之ExpandableListView
生活随笔
收集整理的這篇文章主要介紹了
Android之ExpandableListView
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ExpandableListView可以用來表現多層級的listView,本文主要是ExpandableListView的一個簡單實現
布局文件
<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:orientation="vertical"><LinearLayout android:layout_height="50dip"android:layout_width="match_parent"android:background="#297DC6"><TextView android:layout_marginLeft="100dip"android:layout_height="wrap_content"android:layout_width="wrap_content"android:text="Email"android:textColor="#ffffff"android:textSize="20sp"android:layout_gravity="center_vertical"/></LinearLayout><ExpandableListView android:id="@+id/list"android:layout_height="match_parent"android:layout_width="match_parent"/></LinearLayout>MainActivity實現
package com.zj.expandandview;import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.ExpandableListView; import android.widget.ImageView; import android.widget.TextView; import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ExpandableListView.OnGroupClickListener;public class MainActivity extends Activity {private ExpandableListView expendView;private int []group_click=new int[5];@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final MyExpendAdapter adapter=new MyExpendAdapter();expendView=(ExpandableListView) findViewById(R.id.list);expendView.setGroupIndicator(null); //設置默認圖標不顯示expendView.setAdapter(adapter);//一級點擊事件expendView.setOnGroupClickListener(new OnGroupClickListener() {@Overridepublic boolean onGroupClick(ExpandableListView parent, View v,int groupPosition, long id) {group_click[groupPosition]+=1;adapter.notifyDataSetChanged();return false;}});//二級點擊事件expendView.setOnChildClickListener(new OnChildClickListener() { @Overridepublic boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {//可在這里做點擊事件if(groupPosition==0&&childPosition==1){}else if(groupPosition==0&&childPosition==0){//Intent intent=new Intent(MainActivity.this, MailConstactsActivity.class);//startActivity(intent);}else if(groupPosition==1&&childPosition==0){//Intent intent=new Intent(MainActivity.this, MailEditActivity.class);//startActivity(intent);}else if(groupPosition==1&&childPosition==1){//Intent intent=new Intent(MainActivity.this, MailCaogaoxiangActivity.class);//startActivity(intent);}else if(groupPosition==2&&childPosition==0){}else if(groupPosition==2&&childPosition==1){//Intent intent=new Intent(MainActivity.this, MailBoxActivity.class);//intent.putExtra("TYPE", "INBOX");//intent.putExtra("status", 1);//未讀//startActivity(intent);}else if(groupPosition==2&&childPosition==2){//Intent intent=new Intent(MainActivity.this, MailBoxActivity.class);//intent.putExtra("TYPE", "INBOX");//intent.putExtra("status", 2);//已讀//startActivity(intent);}adapter.notifyDataSetChanged();return false;}});}/*** 適配器* @author Administrator**/private class MyExpendAdapter extends BaseExpandableListAdapter{/*** pic state*///int []group_state=new int[]{R.drawable.group_right,R.drawable.group_down};/*** group title*/String []group_title=new String[]{"聯系人","寫郵件","收件箱"};/*** child text*/String [][] child_text=new String [][]{{"聯系人列表","添加聯系人"},{"新郵件","草稿箱"},{"全部郵件","未讀郵件","已讀郵件"},};int [][] child_icons=new int[][]{{R.drawable.listlianxiren,R.drawable.tianjia},{R.drawable.xieyoujian,R.drawable.caogaoxiang},{R.drawable.all,R.drawable.notread,R.drawable.hasread},};/*** 獲取一級標簽中二級標簽的內容*/@Overridepublic Object getChild(int groupPosition, int childPosition) {return child_text[groupPosition][childPosition];}/*** 獲取二級標簽ID*/@Overridepublic long getChildId(int groupPosition, int childPosition) {return childPosition;}/*** 對一級標簽下的二級標簽進行設置*/@SuppressLint("SimpleDateFormat")@Overridepublic View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {convertView=getLayoutInflater().inflate(R.layout.email_child, null);TextView tv=(TextView) convertView.findViewById(R.id.tv);tv.setText(child_text[groupPosition][childPosition]);ImageView iv=(ImageView) convertView.findViewById(R.id.child_icon);iv.setImageResource(child_icons[groupPosition][childPosition]);return convertView;}/*** 一級標簽下二級標簽的數量*/@Overridepublic int getChildrenCount(int groupPosition) {return child_text[groupPosition].length;}/*** 獲取一級標簽內容*/@Overridepublic Object getGroup(int groupPosition) {return group_title[groupPosition];}/*** 一級標簽總數*/@Overridepublic int getGroupCount() {return group_title.length;}/*** 一級標簽ID*/@Overridepublic long getGroupId(int groupPosition) {return groupPosition;}/*** 對一級標簽進行設置*/@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {convertView=getLayoutInflater().inflate(R.layout.email_group, null);ImageView icon=(ImageView) convertView.findViewById(R.id.icon);ImageView iv=(ImageView) convertView.findViewById(R.id.iv);TextView tv=(TextView) convertView.findViewById(R.id.iv_title);iv.setImageResource(R.drawable.group_right);tv.setText(group_title[groupPosition]);if(groupPosition==0){icon.setImageResource(R.drawable.constants);}else if(groupPosition==1){icon.setImageResource(R.drawable.mailto);}else if(groupPosition==2){icon.setImageResource(R.drawable.mailbox);}if(group_click[groupPosition]%2==0){iv.setImageResource(R.drawable.group_right);}else{iv.setImageResource(R.drawable.group_down);}return convertView;}/*** 指定位置相應的組視圖*/@Overridepublic boolean hasStableIds() {return true;}/*** 當選擇子節點的時候,調用該方法*/@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {return true;}} }參考鏈接 :
Android中ExpandableListView控件基本使用 - Android-Idea - 博客頻道 - CSDN.NET
完成,效果如下
總結
以上是生活随笔為你收集整理的Android之ExpandableListView的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: React Native实例之房产搜索A
- 下一篇: Android高性能ORM数据库DBFl