实现微信好友列表



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>





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值