Android 高仿QQ 好友分组列表
来源:互联网 发布:linux 编译内核 编辑:程序博客网 时间:2024/04/30 04:55
效果如下:
用ExpandableListView实现,
先看Activity的代码:
public class BuddyActivity extends Activity { ExpandableListView expandablelistview; //群组名称 private String[] group = new String[] { "在线好友", "我的好友", "我的同事"}; //好友名称 private String[][] buddy = new String[][] { { "元芳", "雷丶小贱", "狄大人"}, {"高太后", "士兵甲", "士兵乙", "士兵丙" }, { "艺术家", "叫兽", "攻城师", "职业玩家" }}; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_buddy); expandablelistview= (ExpandableListView) findViewById(R.id.buddy_expandablelistview); ExpandableListAdapter adapter=new BuddyAdapter(this,group,buddy); expandablelistview.setAdapter(adapter); //分组展开 expandablelistview.setOnGroupExpandListener(new OnGroupExpandListener(){ public void onGroupExpand(int groupPosition) { } }); //分组关闭 expandablelistview.setOnGroupCollapseListener(new OnGroupCollapseListener(){ public void onGroupCollapse(int groupPosition) { } }); //子项单击 expandablelistview.setOnChildClickListener(new OnChildClickListener(){ public boolean onChildClick(ExpandableListView arg0, View arg1, int groupPosition, int childPosition, long arg4) { Toast.makeText(BuddyActivity.this, group[groupPosition]+" : "+buddy[groupPosition][childPosition], Toast.LENGTH_SHORT).show(); return false; } }); } }
ExpandableListView的布局有2个,分别是组的布局和子项(即好友),先看buddy_listview_group_item.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="match_parent" android:layout_height="30dip" android:background="@drawable/group_fold_bg"> <ImageView android:id="@+id/buddy_listview_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:src="@drawable/group_fold_arrow" /> <TextView android:id="@+id/buddy_listview_group_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_alignTop="@+id/buddy_listview_image" android:layout_toRightOf="@+id/buddy_listview_image" android:text="分组名称" /> <TextView android:id="@+id/buddy_listview_group_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="10dp" android:text="[10/10]" /> </RelativeLayout>
下面是buddy_listview_child_item.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="40dip" > <ImageView android:id="@+id/buddy_listview_child_avatar" android:layout_width="40dip" android:layout_height="40dip" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="10dp" android:src="@drawable/avatar" /> <TextView android:id="@+id/buddy_listview_child_nick" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/buddy_listview_child_avatar" android:text="昵称" android:textSize="16sp" /> <TextView android:id="@+id/buddy_listview_child_trends" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/buddy_listview_child_nick" android:layout_alignParentBottom="true" android:text="该好友暂时没有新动态" android:textSize="12sp" /> </RelativeLayout>
Adapter自然是对应的BaseExpandableListAdapter
public class BuddyAdapter extends BaseExpandableListAdapter { private String[] group; private String[][] buddy; private Context context; LayoutInflater inflater; public BuddyAdapter(Context context,String[] group,String[][] buddy){ this.context=context; inflater = LayoutInflater.from(context); this.group=group; this.buddy=buddy; } public Object getChild(int groupPosition, int childPosition) { return buddy[groupPosition][childPosition]; } public long getChildId(int groupPosition, int childPosition) { return childPosition; } public View getChildView(int groupPosition, int childPosition, boolean arg2, View convertView, ViewGroup arg4) { convertView = inflater.inflate(R.layout.buddy_listview_child_item, null); TextView nickTextView=(TextView) convertView.findViewById(R.id.buddy_listview_child_nick); nickTextView.setText(getChild(groupPosition, childPosition).toString()); return convertView; } public int getChildrenCount(int groupPosition) { return buddy[groupPosition].length; } public Object getGroup(int groupPosition) { return group[groupPosition]; } public int getGroupCount() { return group.length; } public long getGroupId(int groupPosition) { return groupPosition; } public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup arg3) { convertView = inflater.inflate(R.layout.buddy_listview_group_item, null); TextView groupNameTextView=(TextView) convertView.findViewById(R.id.buddy_listview_group_name); groupNameTextView.setText(getGroup(groupPosition).toString()); ImageView image = (ImageView) convertView.findViewById(R.id.buddy_listview_image); image.setImageResource(R.drawable.group_unfold_arrow); //更换展开分组图片 if(!isExpanded){ image.setImageResource(R.drawable.group_fold_arrow); } return convertView; } public boolean hasStableIds() { return true; } // 子选项是否可以选择 public boolean isChildSelectable(int arg0, int arg1) { // TODO Auto-generated method stub return true; } }
- Android 高仿QQ 好友分组列表
- Android 高仿QQ 好友分组列表
- Android 高仿QQ 好友分组列表
- Android 高仿QQ 好友分组列表
- 高仿QQ好友分组列表
- Android 仿QQ好友分组列表、ExpandableListView的使用详解
- Android 仿QQ好友列表分组悬浮PinnedHeaderExpandableListView
- 仿QQ好友列表分组折叠效果
- android 仿qq好友列表分组效果及联系人分组效果
- Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现【3】添加分组,添加好友,读取好友列表的实现
- Android UI视图效果篇之仿QQ好友列表分组悬浮PinnedHeaderExpandableListView
- Android UI视图效果篇之仿QQ好友列表分组悬浮PinnedHeaderExpandableListView
- Android UI设计: 仿QQ好友列表分组悬停,自定义Header,下拉刷新结合Demo
- Android UI视图效果篇之仿QQ好友列表分组悬浮PinnedHeaderExpandableListView
- Android UI视图效果篇之仿QQ好友列表分组悬浮PinnedHeaderExpandableListView
- Android仿QQ好友列表分组实现增删改及持久化
- Android仿QQ好友列表分组实现增删改及持久化
- 仿QQ好友列表
- Android -Recovery
- [笨木头“创业”路]No.6 没落
- 修复被SQL Server 2005置疑的数据库
- ZF2.0用户向导(1)
- Java中int和Integer的区别 Java的封装类和基础类
- Android 高仿QQ 好友分组列表
- GIS基本概念集锦
- android中onMeasure初看,深入理解布局之一!
- ASM:ORA-15063 错误处理方法一则
- ZF2.0用户向导 —— 1. 开始使用ZF 2
- Android中级教程(一)之----手机页面的转换setContentView的应用
- iOS與Web Service(Php)資料交換
- 国内首个基于Windows操作系统的GPU高性能计算集群研制成功
- 点击某些网页内链接时,提示“至少有一个字段错误”