当前位置: 首页 > 编程笔记 >

分享Android中ExpandableListView控件使用教程

杨良平
2023-03-14
本文向大家介绍分享Android中ExpandableListView控件使用教程,包括了分享Android中ExpandableListView控件使用教程的使用技巧和注意事项,需要的朋友参考一下

本文采用一个Demo来展示Android中ExpandableListView控件的使用,如如何在组/子ListView中绑定数据源。直接上代码如下:
程序结构图:

layout目录下的 main.xml 文件源码如下:

<?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"> 
  <!-- 我们会自己定义listview的显示方式(在另外一个布局文件里边)不用默认的方式  
     如果自定义listview的显示方式这里这个android:id="@id/android:list" 必须这样写 --> 
  <!-- android:drawSelectOnTop="false"此属性用来设置listview上的背景颜色会不会 
   挡住(覆盖)内容 , 如果这是为false就表示不会覆盖掉 -->  
  <ExpandableListView  
    android:id="@id/android:list"         
    android:layout_width="fill_parent"         
    android:layout_height="wrap_content"        
    android:layout_weight="1"         
    android:drawSelectorOnTop="false"/>  
</LinearLayout> 

包com.andyidea.demo中ContactsActivity.java源码如下:

package com.andyidea.demo; 
 
import java.util.ArrayList; 
import java.util.List; 
 
import android.app.ExpandableListActivity; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.Window; 
import android.widget.AbsListView; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.TextView; 
 
public class ContactsActivity extends ExpandableListActivity { 
   
  List<String> group;      //组列表 
  List<List<String>> child;   //子列表 
  ContactsInfoAdapter adapter; //数据适配器 
   
  /** Called when the activity is first created. */ 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); //设置为无标题 
    setContentView(R.layout.main); 
    getExpandableListView().setBackgroundResource(R.drawable.default_bg); 
     
    initializeData(); 
    getExpandableListView().setAdapter(new ContactsInfoAdapter()); 
    getExpandableListView().setCacheColorHint(0); //设置拖动列表的时候防止出现黑色背景 
  } 
   
  /** 
   * 初始化组、子列表数据 
   */ 
  private void initializeData(){ 
    group = new ArrayList<String>(); 
    child = new ArrayList<List<String>>(); 
     
    addInfo("Andy",new String[]{"male","138123***","GuangZhou"}); 
    addInfo("Fairy",new String[]{"female","138123***","GuangZhou"}); 
    addInfo("Jerry",new String[]{"male","138123***","ShenZhen"}); 
    addInfo("Tom",new String[]{"female","138123***","ShangHai"}); 
    addInfo("Bill",new String[]{"male","138231***","ZhanJiang"}); 
     
  } 
   
  /** 
   * 模拟给组、子列表添加数据 
   * @param g-group 
   * @param c-child 
   */ 
  private void addInfo(String g,String[] c){ 
    group.add(g); 
    List<String> childitem = new ArrayList<String>(); 
    for(int i=0;i<c.length;i++){ 
      childitem.add(c[i]); 
    } 
    child.add(childitem); 
  } 
   
  class ContactsInfoAdapter extends BaseExpandableListAdapter{ 
 
     
    //-----------------Child----------------// 
    @Override 
    public Object getChild(int groupPosition, int childPosition) { 
      return child.get(groupPosition).get(childPosition); 
    } 
     
    @Override 
    public long getChildId(int groupPosition, int childPosition) { 
      return childPosition; 
    } 
     
    @Override 
    public int getChildrenCount(int groupPosition) { 
      return child.get(groupPosition).size(); 
    } 
     
    @Override 
    public View getChildView(int groupPosition, int childPosition, 
        boolean isLastChild, View convertView, ViewGroup parent) { 
      String string = child.get(groupPosition).get(childPosition);  
      return getGenericView(string); 
    } 
     
    //----------------Group----------------// 
    @Override 
    public Object getGroup(int groupPosition) { 
      return group.get(groupPosition); 
    }         
 
    @Override 
    public long getGroupId(int groupPosition) { 
      return groupPosition; 
    }   
     
    @Override 
    public int getGroupCount() { 
      return group.size(); 
    }   
     
    @Override 
    public View getGroupView(int groupPosition, boolean isExpanded, 
        View convertView, ViewGroup parent) { 
      String string = group.get(groupPosition);  
      return getGenericView(string); 
    } 
 
    //创建组/子视图  
    public TextView getGenericView(String s) {  
      // Layout parameters for the ExpandableListView  
      AbsListView.LayoutParams lp = new AbsListView.LayoutParams(  
          ViewGroup.LayoutParams.FILL_PARENT, 40); 
  
      TextView text = new TextView(ContactsActivity.this);  
      text.setLayoutParams(lp);  
      // Center the text vertically  
      text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);  
      // Set the text starting position  
      text.setPadding(36, 0, 0, 0);  
        
      text.setText(s);  
      return text;  
    }  
     
     
    @Override 
    public boolean hasStableIds() { 
      // TODO Auto-generated method stub 
      return false; 
    }     
 
    @Override 
    public boolean isChildSelectable(int groupPosition, int childPosition) { 
      // TODO Auto-generated method stub 
      return true; 
    } 
     
  } 
} 

最后,程序运行后截图如下:

希望本文所述对大家学习Android软件编程有所帮助。

 类似资料:
  • 本文向大家介绍Android ExpandableListView展开列表控件使用实例,包括了Android ExpandableListView展开列表控件使用实例的使用技巧和注意事项,需要的朋友参考一下 你是否觉得手机QQ上的好友列表那个控件非常棒? 不是..... 那也没关系,学多一点知识对自己也有益无害。 那么我们就开始吧。 展开型列表控件, 原名ExpandableListView 是普

  • 本文向大家介绍Android 中使用ExpandableListView 实现分组的实例,包括了Android 中使用ExpandableListView 实现分组的实例的使用技巧和注意事项,需要的朋友参考一下  Android 中使用ExpandableListView 实现分组 一个视图显示垂直滚动两级列表中的条目。这不同于列表视图,允许两个层次,类似于QQ的好友分组。要实现这个效果的整体思路

  • 本文向大家介绍Android中ExpandableListView使用示例详解,包括了Android中ExpandableListView使用示例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了ExpandableListView使用示例,供大家参考,具体内容如下 MainActivity: MainActivity.xml: ExpandableListViewAdpter:

  • 本文向大家介绍android使用ExpandableListView控件实现小说目录效果的例子,包括了android使用ExpandableListView控件实现小说目录效果的例子的使用技巧和注意事项,需要的朋友参考一下 今天给大家讲讲android的目录实现方法,就像大家看到的小说目录一样,android 提供了ExpandableListView控件可以实现二级列表展示效果,现在给大家讲讲这

  • 本文向大家介绍分享Android仿刮奖效果控件,包括了分享Android仿刮奖效果控件的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android刮刮卡效果控件,供大家参考,具体内容如下 刮刮卡类: 使用: 布局xml代码: 仿刮奖效果的控件:https://github.com/winsontan520/Android-WScratchView 以上就是本文的全部内容,希望对大家

  • 本文向大家介绍Android 分享控件的实现代码,包括了Android 分享控件的实现代码的使用技巧和注意事项,需要的朋友参考一下 如今很多应用都提供向外分享信息的功能,在进行分享操作时,一般是从屏幕底部弹出所有具备分享功能的应用列表,再由用户进行选择 现在我就来模仿实现这种效果,不仅使分享控件从屏幕底部弹出,还要使分享控件能够上下拖动,这就需要使用到 design 包提供的 BottomShee