效果图:
分析:
1、创建listView
2、创建数据
3、创建适配器
将数据放到呈现数据的容器里面。
将这个容器(带数据)连接适配器。
其实是直接在我们自己写的adapter的getView重载方法中返回连接的view。
View view=View.inflate(mContext, com.example.weChatFriends.R.layout.item_friend, null); return view;
4、ListView设置适配器
代码:
package fry;
import java.util.ArrayList;
import java.util.List;
import com.example.weChatFriends.R;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Toast;
public class Activity01 extends Activity implements OnItemSelectedListener,OnItemClickListener{
private FriendModel friend;
private ListView listView;
private List<FriendModel> list;
private weChatListAdapter adapter;
//存资源图片ID
private int[] imageID=new int[]{R.drawable.image1,R.drawable.image2,
R.drawable.image3,R.drawable.image4,R.drawable.image5,R.drawable.image6,
R.drawable.image7,R.drawable.image8,R.drawable.image9,R.drawable.image10,
R.drawable.image11};
//存昵称
private String[] nickName=new String[]{"张三","吴京","战狼","神烦xp","木鱼"
,"水心","系大大","电影","血怒","创奇","讲故事"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity01);
init();
setData();
}
private void setData() {
//这里要是写成for(int i:imageID),那么i就是资源id,例如2130837505
for(int i=0;i<imageID.length;i++){
FriendModel friend1=new FriendModel();
//System.out.println(i);
friend1.setImageNum(imageID[i]);
friend1.setNickName(nickName[i]);
friend1.setSignature("我要做比海贼王还强大的人");
list.add(friend1);
}
adapter=new weChatListAdapter(list, this);
listView.setAdapter(adapter);
}
private void init() {
listView=(ListView) findViewById(R.id.listView);
listView.setOnItemSelectedListener(this);
listView.setOnItemClickListener(this);
friend=new FriendModel();
list=new ArrayList<FriendModel>();
}
/*
* Callback method to be invoked when an item in this view has been selected. This callback is invoked only when the newly selected position is different from the previously selected position or if there was no selected item.(non-Javadoc)
* @see android.widget.AdapterView.OnItemSelectedListener#onItemSelected(android.widget.AdapterView, android.view.View, int, long)
*/
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
FriendModel friendItem=(FriendModel) parent.getItemAtPosition(position);
String s=friendItem.getNickName();
Log.d("onItemClick","s");
Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
}
}
package fry;
import java.util.List;
import com.example.weChatFriends.R;
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 weChatListAdapter extends BaseAdapter{
private List<FriendModel> myData;
private Context mContext;
private ImageView avator;
private TextView nickName1;
private TextView signature1;
private FriendModel friend;
public weChatListAdapter(List<FriendModel> data, Context mContext) {
super();
this.myData = data;
this.mContext = mContext;
}
//How many items are in the data set represented by this Adapter.
@Override
public int getCount() {
// TODO Auto-generated method stub
return this.myData.size();
}
//Get the data item associated with the specified position in the data set.
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return this.myData.get(position);
}
//Get the row id associated with the specified position in the list.
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
//Get a View that displays the data at the specified position in the data set.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view=View.inflate(mContext, com.example.weChatFriends.R.layout.item_friend, null);
//System.out.println(position);
friend=myData.get(position);
int ImageID=friend.getImageNum();
String nickName=friend.getNickName();
String signature=friend.getSignature();
avator=(ImageView) view.findViewById(R.id.iv_avator);
nickName1=(TextView)view.findViewById(R.id.tv_nickname);
signature1=(TextView)view.findViewById(R.id.tv_signature);
avator.setImageResource(ImageID);
nickName1.setText(nickName);
signature1.setText(signature);
return view;
}
}
自己创建的适配器
package fry;
public class FriendModel {
//头像的图片id
private int imageNum;
//昵称
private String nickName;
//个性签名
private String signature;
public int getImageNum() {
return imageNum;
}
public void setImageNum(int imageNum) {
this.imageNum = imageNum;
}
public String getNickName() {
return this.nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
}
列表中联系人数据的封装
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
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_avator"
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@drawable/image1"
/>
<TextView
android:id="@+id/tv_nickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/iv_avator"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:text="张三"
/>
<TextView
android:id="@+id/tv_signature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:text="我要做比海贼王更强大的男人"
/>
</RelativeLayout>
用于存放数据的容器
# android
# listview
# 微信好友
# Android中使用listview实现qq/微信好友列表
# android 实现类似微信缓存和即时更新好友头像示例
# Android仿微信、QQ附近好友雷达扫描效果
# Android实现分享微信好友及出现闪退的解决办法
# Android仿微信雷达辐射搜索好友(逻辑清晰实现简单)
# Android仿微信@好友功能 输入@跳转、删除整块
# 要做
# 海贼王
# 的人
# 更强大
# 个性签名
# 列表中
# String
# nickName
# weChatListAdapter
# ID
# list
# lt
# gt
# drawable
# int
# imageID
# 张三
# Auto
# TODO
# onCreate
相关文章:
如何用花生壳三步快速搭建专属网站?
建站之星备案流程有哪些注意事项?
建站为何优先选择香港服务器?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
寿县云建站:智能SEO优化与多行业模板快速上线指南
如何彻底删除建站之星生成的Banner?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
制作公司内部网站有哪些,内网如何建网站?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
Android自定义listview布局实现上拉加载下拉刷新功能
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
如何批量查询域名的建站时间记录?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
大同网页,大同瑞慈医院官网?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
网站制作网站,深圳做网站哪家比较好?
如何选择美橙互联多站合一建站方案?
如何在Windows环境下新建FTP站点并设置权限?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
海南网站制作公司有哪些,海口网是哪家的?
建站主机SSH密钥生成步骤及常见问题解答?
网站制作免费,什么网站能看正片电影?
广东企业建站网站优化与SEO营销核心策略指南
常州自助建站工具推荐:低成本搭建与模板选择技巧
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
宝塔建站教程:一键部署配置流程与SEO优化实战指南
购物网站制作公司有哪些,哪个购物网站比较好?
制作营销网站公司,淘特是干什么用的?
如何在Windows服务器上快速搭建网站?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
实例解析angularjs的filter过滤器
建站之星×万网:智能建站系统+自助建站平台一键生成
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
如何选择高效便捷的WAP商城建站系统?
深入理解Android中的xmlns:tools属性
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
建站之星后台密码遗忘或太弱?如何重置与强化?
建站之星如何快速生成多端适配网站?
,怎么在广州志愿者网站注册?
建站主机选哪种环境更利于SEO优化?
高端云建站费用究竟需要多少预算?
如何在新浪SAE免费搭建个人博客?
jQuery 常见小例汇总
建站之星安装步骤有哪些常见问题?
如何快速搭建个人网站并优化SEO?
*请认真填写需求信息,我们会在24小时内与您取得联系。