您的位置:首页 > 移动开发 > 微信开发

实现微信好友列表

2014-11-27 20:58 429 查看

ListView列表控件

 Android中的列表控件非常灵活,可以自定义每一个

列表项,实际上每一个列表项就是一个View,在Android定义

了3个列表控件:ListView、ExpandableListView和Spinner,

其中Spinner就是在Windows中常见的下拉列表框。

列表的显示需要三个元素:

1.View 用来展示数据的view

2.适配器 用来把数据映射到view上的中介。

3.数据  具体的将被映射的字符串,图片,或者基本组件。

实战案例 实现微信好友列表

需要源码的请在文章下面留言亲

一、java主函数

package com.example.listview;

import java.util.ArrayList;
import java.util.List;

import com.example.listview.adapter.FriendAdaper;
import com.example.listview.model.FriendModel;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

public class FriendListActivity extends Activity
{
//	ListView控件
private ListView main_listView;
//	绑定数据适配器
private FriendAdaper mAdaper;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.view_mainview);
main_listView=(ListView) findViewById(R.id.main_listView);
mAdaper=new FriendAdaper(this, getData());
//与ListView建立数据通信
main_listView.setAdapter(mAdaper);

}
private List<FriendModel> getData()
{
List<FriendModel> list=new ArrayList<FriendModel>();
//		好友数据共7个好友数据
FriendModel friend1=new FriendModel();
friend1.setIv_photo(R.drawable.show04);
friend1.setTv_01("西西");
friend1.setTv_02("你是我的贝贝,我是你的舒舒");

FriendModel friend2=new FriendModel();
friend2.setIv_photo(R.drawable.show01);
friend2.setTv_01("小南");
friend2.setTv_02("我还有什么理由可以回到以前?");

FriendModel friend3=new FriendModel();
friend3.setIv_photo(R.drawable.show02);
friend3.setTv_01("城池");
friend3.setTv_02("做你坚固的壁垒");

FriendModel friend4=new FriendModel();
friend4.setIv_photo(R.drawable.show03);
friend4.setTv_01("阿德哈");
friend4.setTv_02("嘻嘻哈哈,快快乐乐");

FriendModel friend5=new FriendModel();
friend5.setIv_photo(R.drawable.show05);
friend5.setTv_01("阿斯顿");
friend5.setTv_02("给我一个不伤心的理由");

FriendModel friend6=new FriendModel();
friend6.setIv_photo(R.drawable.show01);
friend6.setTv_01("小南");
friend6.setTv_02("我还有什么理由可以回到以前?");

FriendModel friend7=new FriendModel();
friend7.setIv_photo(R.drawable.show02);
friend7.setTv_01("城池");
friend7.setTv_02("做你坚固的壁垒");
list.add(friend1);
list.add(friend2);
list.add(friend3);
list.add(friend4);
list.add(friend5);
list.add(friend6);
list.add(friend7);

return list;
}
}

二、数据适配器

package com.example.listview.adapter;

import java.util.List;

import com.example.listview.R;
import com.example.listview.model.FriendModel;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class FriendAdaper extends BaseAdapter
{
//来获取position数据
private List<FriendModel> mData;
//没有上下文所以创建一个context
private Context context;
//	创建一个构造方法来接收 mData和context
public FriendAdaper(Context context,List data){
this.mData=data;
this.context=context;
}
//决定列表item显示的个数
@Override
public int getCount()
{

return mData.size();
}
//根据position获取对应item数据
@Override
public Object getItem(int position)
{

return mData.get(position);
}
//获取对应position的item的id
@Override
public long getItemId(int position)
{

return position;
}
//创建列表item的视图
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
//创建的view返回值,获取listView的布局
View view=View.inflate(context, R.layout.item_listview, null);
//		获取item相应的数据对象
FriendModel friend= mData.get(position);
//		初始化view
ImageView iv_photo=(ImageView) view.findViewById(R.id.iv_photo);
TextView tv_01=(TextView) view.findViewById(R.id.tv_01);
TextView tv_02=(TextView) view.findViewById(R.id.tv_02);
//	数据绑定到view
iv_photo.setImageResource(friend.getIv_photo());
tv_01.setText(friend.getTv_01());
tv_02.setText(friend.getTv_02());
//返回绑定完数据的view
return view;
}

}

三、数据类,为了创建存放数据的对象

package com.example.listview.model;

//创建一个数据类,便于建立数据对象存放数据
public class FriendModel
{
//	图片的资源ID
private int iv_photo;
//	昵称
private String tv_01;
//	个性签名
private String tv_02;
public int getIv_photo()
{
return iv_photo;
}
public void setIv_photo(int iv_photo)
{
this.iv_photo = iv_photo;
}
public String getTv_01()
{
return tv_01;
}
public void setTv_01(String tv_01)
{
this.tv_01 = tv_01;
}
public String getTv_02()
{
return tv_02;
}
public void setTv_02(String tv_02)
{
this.tv_02 = tv_02;
}

}


四、xml布局文件中

主函数加载的布局

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_listView"
android:layout_width="match_parent"
android:layout_height="match_parent" >

</ListView>

ListView布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/iv_photo"
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@drawable/show04"/>
<TextView
android:id="@+id/tv_01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="小南"
android:layout_toRightOf="@id/iv_photo"
android:layout_centerVertical="true"
android:layout_margin="2dp"/>
<TextView
android:id="@+id/tv_02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="如果回到过去我们有能抓住什么?"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_margin="2dp"/>

</RelativeLayout>



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息