ListView模拟微信好友功能
ListView模拟微信好友功能
效果图:


分析:

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
<?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>
用于存放数据的容器
ListView模拟微信好友功能的更多相关文章
- 28.qt quick-ListView高仿微信好友列表和聊天列表
1.视图模型介绍 在Qml中.常见的View视图有: ListView: 列表视图,视图中数据来自ListModel.XmlListModel或c++中继承自QAbstractItemModel或Q ...
- Android学习--------实现增删改查数据库操作以及实现相似微信好友对话管理操作
版权声明:本文为博主原创文章,转载请注明原文地址.谢谢~ https://blog.csdn.net/u011250851/article/details/26169409 近期的一个实验用到东西挺多 ...
- (转载) listview实现微信朋友圈嵌套
listview实现微信朋友圈嵌套 标签: androidlistview 2016-01-06 00:05 572人阅读 评论(0) 收藏 举报 分类: android(8) 版权声明:本文为博 ...
- UC浏览器 分享到朋友圈和微信好友 分类: JavaScript 2015-04-28 14:45 615人阅读 评论(1) 收藏
用手机UC浏览器访问新浪微博,会注意到有这样的两个分享按钮: 在手机端浏览器里,点击分享按钮,就可以启动微信客户端并分享到微信.研究了下其源代码,存在这样的一个js:http://mjs.sinaim ...
- 微信分享功能引入页面-控制分享时候调用的标题、图片、url和微信按钮隐藏显示控制
1.设置分享调用的标题.图片.url预览. 2.控制右上角三个点按钮的隐藏显示(和底部工具栏的显示隐藏--未测试). 3.判断网页是否在微信中被调用. <!doctype html> &l ...
- UC浏览器 分享到朋友圈和微信好友
用手机UC浏览器访问新浪微博,会注意到有这样的两个分享按钮: 在手机端浏览器里,点击分享按钮,就可以启动微信客户端并分享到微信.研究了下其源代码,存在这样的一个js:http://mjs.sinaim ...
- Swift - 发送消息(文本,图片,文件等)给微信好友或分享到朋友圈
通过调用微信提供的API接口,我们可以很方便的在应用中发送消息给微信好友,或者分享到朋友圈.在微信开发平台(https://open.weixin.qq.com)里,提供了详细的说明文档和样例.但由于 ...
- Python-定时爬取指定城市天气(一)-发送给关心的微信好友
一.背景 上班的日子总是3点一线,家里,公司和上班的路径,对于一个特别懒得我来说,经常遇到上班路上下雨了,而我却没带伞,多么痛的领悟.最近对python有一种狂热的学习热情,写了4年多的C++代码,对 ...
- python itchat 爬取微信好友信息
原文链接:https://mp.weixin.qq.com/s/4EXgR4GkriTnAzVxluJxmg 「itchat」一个开源的微信个人接口,今天我们就用itchat爬取微信好友信息,无图言虚 ...
随机推荐
- DeltaFish 校园物资共享平台 第六次小组会议
DeltaFish 校园物资共享平台 第六次小组会议 记录人:娄雨禛 2018.6.3 任务进度(2018.5.28-2018.6.3) 前端 李鑫:商品详情界面设计.总体配色分析 刘鼎乾:卖家页面初 ...
- 浅谈Java三大框架与应用
前言:对于一个程序员来说,尤其是在java web端开发的程序员,三大框架:Struts+Hibernate+Spring是必须要掌握熟透的,因此,下面谈谈java三大框架的基本概念和原理. JAVA ...
- Windows Live Writer 历史Blog修改的功能
其实 WLW 有历史Blog修改的功能,我只是一直没有找到,就在打开“最近发布的日志”里面, 位于屏幕的右侧“打开”列表下. 最近发现记忆力越来越差了,BLOG看来是必须的了.
- Linux 之WinSCP连接FTP
1.安装vsftpd 2.ftp命令 /sbin/service vsftpd start /sbin/service vsftpd restart /sbin/service vsftpd stop ...
- Coreldraw软件反盗版提示x8有优惠活动 cdr x8提示盗版怎么办?
CorelDRAW X8装不上,我的悲伤有这么大,或者比这还大一点...♥♥♥如果你遇到这样的断了网,卸了装,装了卸,然后再安装的...╮(-_-)╭这样的保存和另存为都点不了,不敢关电脑的亦或是这样 ...
- 移动端mui常用方法
本文分享一些用Mui的时候所采的坑 1.mui中上拉刷新事件a标签中的链接.元素onclick事件在手机上点击不了 mui('body').on('tap','a',function(){docume ...
- webstorm界面主题
http://www.webstormthemes.com/
- 【转】虚拟化(三):vsphere套件的安装注意及使用
vsphere套件里面主要的组件有esxi.vcenter server .vsphere client和vsphere web client. vcenter做为vsphere套件的核心管理成员之一 ...
- 算法87-----DAG有向无环图的拓扑排序
一.题目:课程排表---210 课程表上有一些课,是必须有修学分的先后顺序的,必须要求在上完某些课的情况下才能上下一门.问是否有方案修完所有的课程?如果有的话请返回其中一个符合要求的路径,否则返回[] ...
- Linux—Ubuntu14.0.5设置MySQL的字符集
1.mysql配置文件地址 cd /etc/mysql/my.cnf 2.在[mysqld]在下方添加以下代码 [mysqld] init_connect='SET collation_connect ...