Android中使用ListView模拟微信好友功能
发布时间 - 2026-01-11 02:59:56 点击率:次效果图:
分析:
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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在云主机上快速搭建多站点网站?
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
EditPlus中的正则表达式 实战(2)
Laravel如何为API生成Swagger或OpenAPI文档
Laravel如何实现API速率限制?(Rate Limiting教程)
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
linux top下的 minerd 木马清除方法
黑客如何利用漏洞与弱口令入侵网站服务器?
IOS倒计时设置UIButton标题title的抖动问题
如何在IIS中新建站点并配置端口与IP地址?
网站制作免费,什么网站能看正片电影?
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
高防服务器租用首荐平台,企业级优惠套餐快速部署
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
如何快速搭建高效WAP手机网站?
Python3.6正式版新特性预览
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何在宝塔面板中修改默认建站目录?
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Laravel怎么实现验证码(Captcha)功能
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
SQL查询语句优化的实用方法总结
iOS发送验证码倒计时应用
Python并发异常传播_错误处理解析【教程】
如何批量查询域名的建站时间记录?
如何在香港服务器上快速搭建免备案网站?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
七夕网站制作视频,七夕大促活动怎么报名?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
Python制作简易注册登录系统
Python结构化数据采集_字段抽取解析【教程】
三星、SK海力士获美批准:可向中国出口芯片制造设备
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
Laravel怎么调用外部API_Laravel Http Client客户端使用
*服务器网站为何频现安全漏洞?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
详解Android图表 MPAndroidChart折线图
php结合redis实现高并发下的抢购、秒杀功能的实例
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置
Angular 表单中正确绑定输入值以确保提交与验证正常工作
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧

