全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android中使用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
 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 


相关文章: 黑客入侵网站服务器的常见手法有哪些?  如何用美橙互联一键搭建多站合一网站?  如何通过虚拟机搭建网站?详细步骤解析  如何在IIS中新建站点并配置端口与物理路径?  如何构建满足综合性能需求的优质建站方案?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  开心动漫网站制作软件下载,十分开心动画为何停播?  如何选择最佳自助建站系统?快速指南解析优劣  如何正确下载安装西数主机建站助手?  三星网站视频制作教程下载,三星w23网页如何全屏?  建站主机与服务器功能差异如何区分?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  如何在万网主机上快速搭建网站?  网站制作免费,什么网站能看正片电影?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  网站专业制作公司有哪些,做一个公司网站要多少钱?  建站主机CVM配置优化、SEO策略与性能提升指南  如何高效配置香港服务器实现快速建站?  建站为何优先选择香港服务器?  香港服务器租用每月最低只需15元?  如何选择高效响应式自助建站源码系统?  名字制作网站免费,所有小说网站的名字?  公司网站制作价格怎么算,公司办个官网需要多少钱?  建站之星安装提示数据库无法连接如何解决?  安徽网站建设与外贸建站服务专业定制方案  宝塔新建站点为何无法访问?如何排查?  如何通过宝塔面板实现本地网站访问?  建站ABC备案流程中有哪些关键注意事项?  想学网站制作怎么学,建立一个网站要花费多少?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  高性能网站服务器配置指南:安全稳定与高效建站核心方案  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  威客平台建站流程解析:高效搭建教程与设计优化方案  潮流网站制作头像软件下载,适合母子的网名有哪些?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何通过多用户协作模板快速搭建高效企业网站?  如何确认建站备案号应放置的具体位置?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何通过主机屋免费建站教程十分钟搭建网站?  简单实现Android文件上传  网站微信制作软件,如何制作微信链接?  公众号网站制作网页,微信公众号怎么制作?  网站制作需要会哪些技术,建立一个网站要花费多少?  建站之星CMS五站合一模板配置与SEO优化指南  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。