Android 高仿QQ 好友分组列表

来源:互联网 发布:企业店铺 淘宝 证件 编辑:程序博客网 时间:2024/04/30 02:22

Android 高仿QQ 好友分组列表   [复制链接]

  
愤怒的小鸟

版主

Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    开心
    2013-9-3 11:05:05
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    • 串个门
    • 加好友
    • 打招呼
    • 发消息
    跳转到指定楼层
    楼主
     发表于 2012-11-4 10:53:02 |只看该作者 |倒序浏览
    本帖最后由 愤怒的小鸟 于 2012-11-4 10:53 编辑

    实现的效果如下:
    1351748461_9838.png 
    用ExpandableListView实现,
    先看Activity的代码:
    1. public class BuddyActivity extends Activity { 
    2.     ExpandableListView expandablelistview;  
    3.     //群组名称     
    4.     private String[] group = new String[] { "在线好友", "我的好友", "我的同事"};    
    5.     //好友名称     
    6.     private String[][] buddy = new String[][] {  
    7.             { "元芳", "雷丶小贱", "狄大人"},   
    8.             {"高太后", "士兵甲", "士兵乙", "士兵丙" },  
    9.             { "艺术家", "叫兽", "攻城师", "职业玩家" }};    
    10.       
    11.     public void onCreate(Bundle savedInstanceState) {  
    12.         super.onCreate(savedInstanceState);  
    13.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
    14.         setContentView(R.layout.activity_buddy);  
    15.           
    16.         expandablelistview= (ExpandableListView) findViewById(R.id.buddy_expandablelistview);  
    17.         ExpandableListAdapter adapter=new BuddyAdapter(this,group,buddy);  
    18.         expandablelistview.setAdapter(adapter);  
    19.         //分组展开  
    20.         expandablelistview.setOnGroupExpandListener(new OnGroupExpandListener(){  
    21.             public void onGroupExpand(int groupPosition) {  
    22.             }  
    23.         });  
    24.         //分组关闭  
    25.         expandablelistview.setOnGroupCollapseListener(new OnGroupCollapseListener(){  
    26.             public void onGroupCollapse(int groupPosition) {  
    27.             }  
    28.         });  
    29.         //子项单击  
    30.         expandablelistview.setOnChildClickListener(new OnChildClickListener(){  
    31.             public boolean onChildClick(ExpandableListView arg0, View arg1,  
    32.                     int groupPosition, int childPosition, long arg4) {  
    33.                 Toast.makeText(BuddyActivity.this,   
    34.                         group[groupPosition]+" : "+buddy[groupPosition][childPosition],   
    35.                         Toast.LENGTH_SHORT).show();  
    36.                 return false;  
    37.             }  
    38.         });  
    39.     }  
    40. }  
    复制代码
    ExpandableListView的布局有2个,分别是组的布局和子项(即好友),先看buddy_listview_group_item.xml
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:id="@+id/RelativeLayout1"  
    4.     android:layout_width="match_parent"  
    5.     android:layout_height="30dip"   
    6.     android:background="@drawable/group_fold_bg">  
    7.     <ImageView  
    8.         android:id="@+id/buddy_listview_image"  
    9.         android:layout_width="wrap_content"  
    10.         android:layout_height="wrap_content"  
    11.         android:layout_alignParentLeft="true"  
    12.         android:layout_centerVertical="true"  
    13.         android:layout_marginLeft="10dp"  
    14.         android:src="@drawable/group_fold_arrow" />  
    15.     <TextView  
    16.         android:id="@+id/buddy_listview_group_name"  
    17.         android:layout_width="wrap_content"  
    18.         android:layout_height="wrap_content"  
    19.         android:layout_centerVertical="true"  
    20.         android:layout_alignTop="@+id/buddy_listview_image"  
    21.         android:layout_toRightOf="@+id/buddy_listview_image"  
    22.         android:text="分组名称" />  
    23.     <TextView  
    24.         android:id="@+id/buddy_listview_group_num"  
    25.         android:layout_width="wrap_content"  
    26.         android:layout_height="wrap_content"  
    27.         android:layout_alignParentRight="true"  
    28.         android:layout_centerVertical="true"  
    29.         android:layout_marginRight="10dp"  
    30.         android:text="[10/10]" />  
    31. </RelativeLayout>  
    复制代码
    下面是buddy_listview_child_item.xml
    1.     <?xml version="1.0" encoding="utf-8"?>  
    2.     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.         android:layout_width="match_parent"  
    4.         android:layout_height="40dip" >  
    5.         <ImageView  
    6.             android:id="@+id/buddy_listview_child_avatar"  
    7.             android:layout_width="40dip"  
    8.             android:layout_height="40dip"  
    9.             android:layout_alignParentLeft="true"  
    10.             android:layout_alignParentTop="true"  
    11.             android:layout_marginLeft="10dp"  
    12.             android:src="@drawable/avatar" />  
    13.         <TextView  
    14.             android:id="@+id/buddy_listview_child_nick"  
    15.             android:layout_width="wrap_content"  
    16.             android:layout_height="wrap_content"  
    17.             android:layout_alignParentTop="true"  
    18.             android:layout_toRightOf="@+id/buddy_listview_child_avatar"  
    19.             android:text="昵称"  
    20.             android:textSize="16sp" />  
    21.         <TextView  
    22.             android:id="@+id/buddy_listview_child_trends"  
    23.             android:layout_width="wrap_content"  
    24.             android:layout_height="wrap_content"  
    25.             android:layout_alignLeft="@+id/buddy_listview_child_nick"  
    26.             android:layout_alignParentBottom="true"  
    27.             android:text="该好友暂时没有新动态"  
    28.             android:textSize="12sp" />  
    29.       
    30.     </RelativeLayout>  
    复制代码
    Adapter自然是对应的BaseExpandableListAdapter
    1. public class BuddyAdapter extends BaseExpandableListAdapter {     
    2.     private String[] group;   
    3.     private String[][] buddy;  
    4.     private Context context;  
    5.     LayoutInflater inflater;  
    6.       
    7.     public BuddyAdapter(Context context,String[] group,String[][] buddy){  
    8.         this.context=context;  
    9.         inflater = LayoutInflater.from(context);  
    10.         this.group=group;  
    11.         this.buddy=buddy;  
    12.     }  
    13.     public Object getChild(int groupPosition, int childPosition) {  
    14.         return buddy[groupPosition][childPosition];  
    15.     }  
    16.   
    17.     public long getChildId(int groupPosition, int childPosition) {  
    18.         return childPosition;  
    19.     }  
    20.   
    21.     public View getChildView(int groupPosition, int childPosition, boolean arg2, View convertView,  
    22.             ViewGroup arg4) {  
    23.         convertView = inflater.inflate(R.layout.buddy_listview_child_item, null);  
    24.         TextView nickTextView=(TextView) convertView.findViewById(R.id.buddy_listview_child_nick);  
    25.         nickTextView.setText(getChild(groupPosition, childPosition).toString());  
    26.         return convertView;  
    27.     }  
    28.   
    29.     public int getChildrenCount(int groupPosition) {  
    30.         return buddy[groupPosition].length;  
    31.     }  
    32.   
    33.     public Object getGroup(int groupPosition) {  
    34.         return group[groupPosition];  
    35.     }  
    36.   
    37.     public int getGroupCount() {  
    38.         return group.length;  
    39.     }  
    40.   
    41.     public long getGroupId(int groupPosition) {  
    42.         return groupPosition;  
    43.     }  
    44.   
    45.     public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup arg3) {  
    46.         convertView = inflater.inflate(R.layout.buddy_listview_group_item, null);  
    47.         TextView groupNameTextView=(TextView) convertView.findViewById(R.id.buddy_listview_group_name);  
    48.         groupNameTextView.setText(getGroup(groupPosition).toString());  
    49.         ImageView image = (ImageView) convertView.findViewById(R.id.buddy_listview_image);  
    50.         image.setImageResource(R.drawable.group_unfold_arrow);  
    51.         //更换展开分组图片  
    52.         if(!isExpanded){  
    53.             image.setImageResource(R.drawable.group_fold_arrow);  
    54.         }  
    55.         return convertView;  
    56.     }  
    57.   
    58.     public boolean hasStableIds() {  
    59.         return true;  
    60.     }  
    61.     // 子选项是否可以选择    
    62.     public boolean isChildSelectable(int arg0, int arg1) {  
    63.         // TODO Auto-generated method stub  
    64.         return true;  
    65.     }  
    66. }  
    复制代码
    0 0