展会信息港展会大全

android ExpandableListView模仿qq好友
来源:互联网   发布日期:2015-11-26 11:06:13   浏览:3577次  

导读:项目中需要类似qq好友的通讯录,所以就写了一个简单的例子,分享一下。1、MainActivity.java的代码:package com.tbx.android;import java.util.ArrayList;import java.util.List;import android.app.Activi......

项目中需要类似qq好友的通讯录,所以就写了一个简单的例子,分享一下。

1、MainActivity.java的代码:

package com.tbx.android;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.widget.ExpandableListView;

public class MainActivity extends Activity {

ExpendAdapter adapter;

ExpandableListView exList;

private List<GroupElement> parentList = new ArrayList<GroupElement>();

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

exList = (ExpandableListView) this.findViewById(R.id.expandableListView1);

initData();

adapter = new ExpendAdapter(MainActivity.this, parentList);

exList.setAdapter(adapter);

exList.setGroupIndicator(null);

exList.setDivider(null);

}

private void initData() {

GroupElement group1 = new GroupElement();

ChildElement childElement = new ChildElement();

childElement.setMood("我喜欢王");

childElement.setResoureid(R.drawable.f009);

childElement.setTitle("小鸟");

group1.putChildElement(childElement);

childElement = new ChildElement();

childElement.setMood("我喜欢王");

childElement.setResoureid(R.drawable.f010);

childElement.setTitle("android");

group1.putChildElement(childElement);

group1.setTitle("我的好友");

parentList.add(group1);

GroupElement group2 = new GroupElement();

childElement = new ChildElement();

childElement.setMood("我喜欢王");

childElement.setResoureid(R.drawable.f009);

childElement.setTitle("小鸟");

group2.putChildElement(childElement);

childElement = new ChildElement();

childElement.setMood("我喜欢王");

childElement.setResoureid(R.drawable.f010);

childElement.setTitle("android");

group2.putChildElement(childElement);

group2.setTitle("高中同学");

parentList.add(group2);

}

}

2、ExpendAdapter.java 代码:

package com.tbx.android;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseExpandableListAdapter;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;

import java.util.*;

public class ExpendAdapter extends BaseExpandableListAdapter {

private LayoutInflater layoutInflater;

private Context mContext;

private List<GroupElement> parentList = new ArrayList<GroupElement>();

public ExpendAdapter(Context mContext,List<GroupElement> parentList){

this.mContext = mContext;

this.parentList = parentList;

layoutInflater = LayoutInflater.from(mContext);

}

public Object getChild(int groupPosition, int childPosition) {

GroupElement group = parentList.get(groupPosition);

if(group!=null){

return group.getChildElement(childPosition);

}

return null;

}

@Override

public long getChildId(int groupPosition, int childPosition) {

return childPosition;

}

@Override

public View getChildView(int groupPosition, int childPosition,

boolean isLastChild, View convertView, ViewGroup parent) {

if(convertView ==null){

convertView = layoutInflater.inflate(R.layout.child, null);

}

GroupElement groupElement = parentList.get(groupPosition);

ChildElement childElement = groupElement.getChildElement(childPosition);

if(childElement == null){

return null ;

}

final ImageView head=(ImageView)convertView.findViewById(R.id.headImage);

head.setImageResource(childElement.getResoureid());

final TextView title=(TextView)convertView.findViewById(R.id.title);

title.setText(childElement.getTitle());

final TextView mood =(TextView)convertView.findViewById(R.id.mood);

mood.setText(childElement.getMood());

return convertView;

}

@Override

public int getChildrenCount(int groupPosition) {

GroupElement group = parentList.get(groupPosition);

if(group!=null){

return group.getChildSize();

}

return 0;

}

@Override

public Object getGroup(int groupPosition) {

return parentList.get(groupPosition);

}

@Override

public int getGroupCount() {

return parentList.size();

}

@Override

public long getGroupId(int groupPosition) {

return groupPosition;

}

@Override

public View getGroupView(int groupPosition, boolean isExpanded,

View convertView, ViewGroup parent) {

if(convertView==null){

convertView=layoutInflater.inflate(R.layout.parent, null);

}

final TextView user_group_name = (TextView) convertView.findViewById(R.id.user_group_name);

user_group_name.setText(parentList.get(groupPosition).getTitle());

final TextView user_group_size = (TextView) convertView.findViewById(R.id.user_group_size);

int size = parentList.get(groupPosition).getChildSize();

user_group_size.setText("["+size+"]");

final ImageView imageView = (ImageView) convertView.findViewById(R.id.user_group);

if(isExpanded){

imageView.setBackgroundResource(R.drawable.group_unfold_arrow);

}else{

imageView.setBackgroundResource(R.drawable.group_fold_arrow);

}

return convertView;

}

@Override

public void onGroupCollapsed(int groupPosition) {

super.onGroupCollapsed(groupPosition);

}

@Override

public void onGroupExpanded(int groupPosition) {

super.onGroupExpanded(groupPosition);

}

@Override

public boolean hasStableIds() {

return true;

}

@Override

public boolean isChildSelectable(int groupPosition, int childPosition) {

Toast.makeText(mContext, "这是第"+groupPosition+"组,第"+childPosition+"个", Toast.LENGTH_SHORT).show();

return true;

}

}

3、GroupElement.java 代码:

package com.tbx.android;

import java.util.ArrayList;

public class GroupElement {

private String title ;

private String img ;

private List<ChildElement> childList = new ArrayList<ChildElement>();

public ChildElement getChildElement(int childPosition){

return childList.get(childPosition);

}

public void putChildElement(ChildElement childElement){

childList.add(childElement);

}

public int getChildSize(){

return childList.size();

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getImg() {

return img;

}

public void setImg(String img) {

this.img = img;

}

public List<ChildElement> getChildList() {

return childList;

}

public void setChildList(List<ChildElement> childList) {

this.childList = childList;

}

}

4、ChildElement.java代码:

public class ChildElement {

private String title ;

private boolean isOnline ;

private int resoureid; //显示图片的资源id

private String mood ; //心情

....

}

5、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"

android:background="@drawable/back1"

>

<ExpandableListView

android:id="@+id/expandableListView1"

android:layout_height="wrap_content"

android:layout_width="fill_parent">

</ExpandableListView>

</LinearLayout>

6、parent.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:orientation="horizontal"

android:id="@+id/parentList"

android:layout_height="wrap_content">

<ImageView

android:id="@+id/user_group"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

<TextView

android:id="@+id/user_group_name"

android:textSize="20dp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<TextView

android:id="@+id/user_group_size"

android:textSize="20dp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

</LinearLayout>

7、child.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/childList"

android:orientation="horizontal"

>

<ImageView

android:paddingLeft="20px"

android:id="@+id/headImage"

android:src="@drawable/f009"

android:layout_width="50px"

android:layout_height="50px"

android:layout_marginBottom="5px"

android:layout_marginRight="10px"/>

<LinearLayout

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

<TextView android:id="@+id/title"

android:textSize="18px"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

<TextView android:id="@+id/mood"

android:textSize="16px"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

</LinearLayout>

</LinearLayout>

这是所有的主要代码,至于图片我就不上除了,如果那位同学想看看,可以留言。后面会对ExpandableListView详细分析

赞助本站

人工智能实验室

相关热词: ExpandableListView

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港