效果图:

分析:

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

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

}

/*

* 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 myData;

private Context mContext;

private ImageView avator;

private TextView nickName1;

private TextView signature1;

private FriendModel friend;

public weChatListAdapter(List 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;

}

}

列表中联系人数据的封装

android:id="@+id/listView"

android:layout_width="match_parent"

android:layout_height="wrap_content" >

ListView

ListView

android:layout_width="wrap_content"

android:layout_height="wrap_content" >

android:id="@+id/iv_avator"

android:layout_width="70dp"

android:layout_height="70dp"

android:src="@drawable/image1"

/>

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="张三"

/>

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="我要做比海贼王更强大的男人"

/>

用于存放数据的容器

android微信模拟,Android中使用ListView模拟微信好友功能相关推荐

  1. [转载]Android: 如何实现ScrollView中含有ListView?

    原文地址:Android: 如何实现ScrollView中含有ListView?作者:mailofzxf ListView本身就含有ScrollView,因此把ListView放到ScrollView ...

  2. 微信在线客服 php,微信小程序中添加联系在线客服功能

    这次给大家带来微信小程序中添加联系在线客服功能,微信小程序中添加联系在线客服功能的注意事项有哪些,下面就是实战案例,一起来看一下. 1. 普通客服按钮添加客服-联系我们 2. 悬浮客服按钮添加,图片自 ...

  3. android+listview设置行高,android – 无法在行xml中设置listView行高的高度

    这是我的自定义适配器的getView方法: public View getView(int position, View convertView, ViewGroup viewGroup) { Sin ...

  4. android 点赞局部刷新,局部刷新ListView,实现点赞功能

    今天看到一个需要实现一个点赞的功能.自己想没想明白,后来看了http://blog.csdn.net/nupt123456789/article/details/39432781 这篇博客,才有了思路 ...

  5. 微信小程序中嵌套html_在微信小程序中渲染HTML内容3种解决方案及分析与问题解决...

    大部分Web应用的富文本内容都是以HTML字符串的形式存储的,通过HTML文档去展示HTML内容自然没有问题.但是,在微信小程序(下文简称为「小程序」)中,应当如何渲染这部分内容呢? 在微信小程序中渲 ...

  6. python微信公众号翻译功能怎么用_Watson使用指南(七)在微信公众号中实现识图作诗功能...

    本文章主要是写一下这个项目开发的过程及之间遇到的问题,作为记录,也希望以此为契机认识志同道合的朋友,一起学习交流. 目录: 概述 环境准备及相关账号申请 部署Python Flask应用到Bluemi ...

  7. python获取藏头诗内容_Watson使用指南(六)在微信公众号中实现识图作诗功能

    本文章主要是写一下这个项目开发的过程及之间遇到的问题,作为记录,也希望以此为契机认识志同道合的朋友,一起学习交流. 目录: 概述 环境准备及相关账号申请 部署Python Flask应用到Bluemi ...

  8. Watson使用指南(六)在微信公众号中实现识图作诗功能

    本文章主要是写一下这个项目开发的过程及之间遇到的问题,作为记录,也希望以此为契机认识志同道合的朋友,一起学习交流. 目录: 概述 环境准备及相关账号申请 部署Python Flask应用到Bluemi ...

  9. 从微信的改版中我看到了微信的焦虑

    从前天开始,朋友圈和公众号文章就开始刷屏微信更新了,今早我也迫不及待的体验了一下,这一体验不得了,我把微信群炸了个人仰马翻,我真想说一句,二营长,把老子的意大利炮拿过来. 我首先说一下微信更新的一些点 ...

最新文章

  1. python判断CSV文件是否空
  2. 【基带传输】基于matlab的简易无线基带传输系统的仿真
  3. Dev XtraReport 正在打印弹出框如何隐藏 批量打印 静默打印
  4. A/B Matrix CodeForces - 1360G(思维构造)
  5. 《剑指Offer》用两个栈来实现队列
  6. 【SPOJ】2319 BIGSEQ - Sequence
  7. 201521145048《Java程序设计管理》第一周学习总结
  8. python3之线程
  9. 模糊逻辑(Fuzzy Logic)
  10. 产品需求分析思路和方法
  11. Memory stream is not expandable
  12. 【附源码】手写一个Ico生成器
  13. sp3 文件格式说明
  14. java发送lrc文件格式_java中用正則表達式解析LRC文件
  15. Excel数据的筛选
  16. 计算机硬件配件怎么查,如何查看计算机主板型号?主板型号在哪里[方法]
  17. 计算机作文 六年级,我和电脑600字_六年级作文_小学作文 - 265学校教育网
  18. 副连长是什么级别_军改后连长工资有多少?军改后军队各级别工资待遇标准
  19. 深入探讨大数据权限管理方案-从哲学到技术
  20. 免费敏感词检测API

热门文章

  1. macOS关闭SIP后,仍无法修改/usr文件夹下文件
  2. 关于我为了看懂技术文档而爬英语技术文档的单词这件事
  3. 不再迷惑,也许之前你从未真正懂得 Scroller 及滑动机制
  4. 30分钟学会html+css实现乒乓球快打特效(内附源码)
  5. matlab语句运算相关论文,等于计算论文,关于MATLAB在瑞典条分法中的应用相关参考文献资料-免费论文范文...
  6. 系统调用的文件编程实现cp命令
  7. web安全入门(第四章-1)SQL注入的原理分析
  8. 2021-12-22 vue移动端卖座电影项目(十五) 如何将项目上传到远程仓库
  9. oracle排除某个条件,去除SQL语句某查询条件
  10. 实际开发中运费模板区域选择