Android开发---类似QQ分组列表的实现案例

前阵子做一个APP,一直也没找到一个很好的实现分组显示列表的方法,今天有心查了查,发现一个好的实现方法,收藏下,亲自测试很好,不多说了,直接贴出源码:

package com.android.fenzu;

import android.app.ExpandableListActivity;
import android.os.Bundle;

public class fenzu extends ExpandableListActivity {
 
 @Override
 public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);
  setListAdapter(new IdeasExpandableListAdapter(this));

 }


}

 

package com.android.fenzu;

import java.util.ArrayList;

import java.util.List;

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.TextView;


import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;

public class IdeasExpandableListAdapter extends BaseExpandableListAdapter {
 
 private Context mContext = null;
 
 private String[] groups = { "家人", "朋友", "同事" };

 private String[] familis = { "老爸", "老妈", "妹妹" };

 private String[] friends = { "小李", "张三", "李四" };

 private String[] colleagues = { "陈总", "李工", "李客户" };

 private List<String> groupList = null;
 
 private List<List<String>> itemList = null;

 public IdeasExpandableListAdapter(Context context) {

 this.mContext = context;

 groupList = new ArrayList<String>();

 itemList = new ArrayList<List<String>>();

 initData();

 }

 

 private void initData() {

 for (int i = 0; i < groups.length; i++) {

 groupList.add(groups[i]);

 }

 List<String> item1 = new ArrayList<String>();

 for (int i = 0; i < familis.length; i++) {

 item1.add(familis[i]);

 }

 List<String> item2 = new ArrayList<String>();

 for (int i = 0; i < friends.length; i++) {

 item2.add(friends[i]);

 }

 List<String> item3 = new ArrayList<String>();

 for (int i = 0; i < colleagues.length; i++) {

 item3.add(colleagues[i]);

 }

 itemList.add(item1);

 itemList.add(item2);

 itemList.add(item3);

 }

 public boolean areAllItemsEnabled() {

 return false;

 }

 

 public Object getChild(int groupPosition, int childPosition) {

  return itemList.get(groupPosition).get(childPosition);

 }

 public long getChildId(int groupPosition, int childPosition) {

  return childPosition;

  }

  

  public View getChildView(int groupPosition, int childPosition,

  boolean isLastChild, View convertView, ViewGroup parent) {

  TextView text = null;

  if (convertView == null) {

  text = new TextView(mContext);

  } else {

   text = (TextView) convertView;

   }

   // 获取子节点要显示的名称

   String name = (String) itemList.get(groupPosition).get(childPosition);

   // 设置文本视图的相关属性

   AbsListView.LayoutParams lp = new AbsListView.LayoutParams(

   ViewGroup.LayoutParams.FILL_PARENT, 40);

   text.setLayoutParams(lp);

   text.setTextSize(18);

   text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);

   text.setPadding(45, 0, 0, 0);

   text.setText(name);

   return text;

   }

   

   public int getChildrenCount(int groupPosition) {

   return itemList.get(groupPosition).size();

   }

   

   public Object getGroup(int groupPosition) {

   return groupList.get(groupPosition);

   }

   

   public int getGroupCount() {

   return groupList.size();

   }

   public long getGroupId(int groupPosition) {

   return groupPosition;

   }

   

   public View getGroupView(int groupPosition, boolean isExpanded,

   View convertView, ViewGroup parent) {

   TextView text = null;

   if (convertView == null) {

   text = new TextView(mContext);

   } else {

   text = (TextView) convertView;

   }

   String name = (String) groupList.get(groupPosition);

   AbsListView.LayoutParams lp = new AbsListView.LayoutParams(

   ViewGroup.LayoutParams.FILL_PARENT, 40);

   text.setLayoutParams(lp);

   text.setTextSize(18);

   text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);

   text.setPadding(36, 0, 0, 0);

   text.setText(name);

   return text;

   }

   

   public boolean isEmpty() {

   return false;

   }

   

   public void onGroupCollapsed(int groupPosition) {

   }

   

   public void onGroupExpanded(int groupPosition) {

   }

   

   public boolean hasStableIds() {

   return false;

   }

   

   public boolean isChildSelectable(int groupPosition, int childPosition) {

   return true;

   }

}
Android开发---类似QQ分组列表的实现案例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package wjq.WidgetDemo; import android.app.ExpandableListActivity; import android.os.Bundle; import android.provider.Contacts.People; import android.util.Log; import android.view.ContextMenu; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.ContextMenu.ContextMenuInfo; import android.widget.AbsListView; import android.widget.BaseExpandableListAdapter; import android.widget.ExpandableListAdapter; import android.widget.ExpandableListView; import android.widget.TextView; import android.widget.Toast; import android.widget.ExpandableListView.ExpandableListContextMenuInfo; public class ExpandableListDemo extends ExpandableListActivity{ private ExpandableListAdapter adapter; //private MyExpandableListAdapter MyAdapter=new MyExpandableListAdapter(); /* (non-Javadoc) * @see android.app.Activity#onCreate(android.os.Bundle) */ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); adapter=new MyExpandableListAdapter(); setListAdapter(adapter); registerForContextMenu(getExpandableListView()); } /* (non-Javadoc) * @see android.app.ExpandableListActivity#onCreateContextMenu(android.view.ContextMenu, android.view.View, android.view.ContextMenu.ContextMenuInfo) */ @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle("菜单"); menu.add(0, 0, 0, "Action"); } /* (non-Javadoc) * @see android.app.Activity#onContextItemSelected(android.view.MenuItem) */ @Override public boolean onContextItemSelected(MenuItem item) { boolean flag=false; // TODO Auto-generated method stub ExpandableListContextMenuInfo menuInfo=(ExpandableListContextMenuInfo)item.getMenuInfo(); String title=((TextView)menuInfo.targetView).getText().toString(); int type=ExpandableListView.getPackedPositionType(menuInfo.packedPosition); if (type==ExpandableListView.PACKED_POSITION_TYPE_CHILD) { int groupPos =ExpandableListView.getPackedPositionGroup(menuInfo.packedPosition); int childPos =ExpandableListView.getPackedPositionChild(menuInfo.packedPosition); CharSequence str="您单击了"+title; Toast.makeText(this, str, Toast.LENGTH_SHORT).show(); Log.i("tag", "Run Hereing..."); flag= true; } else if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { int groupPos = ExpandableListView.getPackedPositionGroup(menuInfo.packedPosition); CharSequence cs="您单击了"+title; Toast.makeText(this, cs, Toast.LENGTH_SHORT).show(); Log.i("tag", "Run Here..."); flag= true; } return flag; } public class MyExpandableListAdapter extends BaseExpandableListAdapter { // Sample data set. children[i] contains the children (String[]) for groups[i]. public String[] groups = { "我的好友", "新疆同学", "亲戚", "同事" }; public String[][] children = { { "胡算林", "张俊峰", "王志军", "二人" }, { "李秀婷", "蔡乔", "别高", "余音" }, { "摊派新", "张爱明" }, { "马超", "司道光" } }; public Object getChild(int groupPosition, int childPosition) { return children[groupPosition][childPosition]; } public long getChildId(int groupPosition, int childPosition) { return childPosition; } public int getChildrenCount(int groupPosition) { return children[groupPosition].length; } public TextView getGenericView() { // Layout parameters for the ExpandableListView AbsListView.LayoutParams lp = new AbsListView.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, 64); TextView textView = new TextView(ExpandableListDemo.this); textView.setLayoutParams(lp); // Center the text vertically textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); // Set the text starting position textView.setPadding(36, 0, 0, 0); return textView; } public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { TextView textView = getGenericView(); textView.setText(getChild(groupPosition, childPosition).toString()); return textView; } public Object getGroup(int groupPosition) { return groups[groupPosition]; } public int getGroupCount() { return groups.length; } public long getGroupId(int groupPosition) { return groupPosition; } public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { TextView textView = getGenericView(); textView.setText(getGroup(groupPosition).toString()); return textView; } public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } public boolean hasStableIds() { return true; } } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值