android微信好友列表的设计,实现微信好友列表

本文通过实例展示了如何在Android中使用ListView实现好友列表,包括自定义视图、数据适配器的创建和数据模型的设计。详细步骤涉及数据绑定、ListView设置和 FriendModel 类的使用。
摘要由CSDN通过智能技术生成



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 getData()

{

List list=new ArrayList();

//好友数据共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 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布局文件中

主函数加载的布局

android:id="@+id/main_listView"

android:layout_width="match_parent"

android:layout_height="match_parent" >

ListView布局

android:layout_width="wrap_content"

android:layout_height="wrap_content" >

android:id="@+id/iv_photo"

android:layout_width="70dp"

android:layout_height="70dp"

android:src="@drawable/show04"/>

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"/>

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"/>

0818b9ca8b590ca3270a3433284dd417.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值