android:listview实现qq,微信好友列表(头像,昵称,个性签名)

转载 2016年09月11日 12:22:54

首先附上运行结果:


如果你没有学过listview请你先看一看基本知识。不想再说的那么细了 太多了。

首先是listview布局

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <ListView xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/lv_view"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:cacheColorHint="#00000000"  
  7.     android:background="@drawable/back"  
  8.     android:orientation="vertical" >  
  9. </ListView>  
在这里我为什么这样设置

  1. android:cacheColorHint="#00000000"  
  2. android:background="@drawable/back"  

     在Android中,ListView是最常用的一个控件,在做UI设计的时候,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果。
 这是什么原因导致的呢?起初我以为是因为我把背景设置成了白色,然后产生色差导致的,后来查阅资料发现,其实这个要从Listview的效果说起,默认的ListItem背景是透明的,而ListView的背景是固定不变的,所以在滚动条滚动的过程中如果实时地去将当前每个Item的显示内容跟背景进行混合运算,所以android系统为了优化这个过程用,就使用了一个叫做android:cacheColorHint的属性,在黑色主题下默认的颜色值是#191919,所以就出现了刚才的画面,有一半是黑色的,那怎么办呢? 
       如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#00000000)就可以了,当然为了美化是要牺牲一些效率的。

以上文字转自:http://blog.csdn.net/mad1989/article/details/7590122

由于我们使用的好友列表向比较复杂,一个ImageView两个TextView.,所以要自定义adapter.下面的TextView是我自己创建的TextView为了实现昵称和个性签名的滚动效果。由于占用资源太多 不推荐所有人的昵称和个性签名都滚动哦,只要获得焦点的滚动就好了。我就不改了 交给你了

MyTextView.class

  1. package com.example.friendlist.mytextview;  
  2.   
  3. import android.content.Context;  
  4. import android.util.AttributeSet;  
  5. import android.widget.TextView;  
  6.   
  7. public class MyTextView extends TextView{  
  8.   
  9.     public MyTextView(Context context, AttributeSet attrs, int defStyle) {  
  10.         super(context, attrs, defStyle);  
  11.         // TODO Auto-generated constructor stub  
  12.     }  
  13.   
  14.     public MyTextView(Context context, AttributeSet attrs) {  
  15.         super(context, attrs);  
  16.         // TODO Auto-generated constructor stub  
  17.     }  
  18.   
  19.     public MyTextView(Context context) {  
  20.         super(context);  
  21.         // TODO Auto-generated constructor stub  
  22.     }  
  23.     //一直return true    
  24.     @Override  
  25.     public boolean isFocused() {  
  26.         // TODO Auto-generated method stub  
  27.         return true;  
  28.     }  
  29. }  


自定义adapter引用的布局文件

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content"  
  5.     android:paddingBottom="@dimen/activity_vertical_margin"  
  6.     android:paddingLeft="@dimen/activity_horizontal_margin"  
  7.     android:paddingRight="@dimen/activity_horizontal_margin"  
  8.     android:paddingTop="@dimen/activity_vertical_margin"  
  9.     tools:context=".FirendListActivity" >  
  10.   
  11.     <ImageView   
  12.         android:id="@+id/iv_picture"  
  13.         android:layout_alignParentLeft="true"  
  14.         android:layout_width="60dp"  
  15.         android:layout_height="60dp"  
  16.         android:src="@drawable/pic1"  
  17.         />  
  18.     <com.example.friendlist.mytextview.MyTextView  
  19.         android:id="@+id/tv_nickname"  
  20.         android:layout_width="wrap_content"  
  21.         android:layout_height="wrap_content"  
  22.         android:layout_toRightOf="@id/iv_picture"  
  23.         android:maxEms="4"  
  24.         android:singleLine="true"  
  25.         android:ellipsize="marquee"  
  26.         android:layout_centerInParent="true" />  
  27.     <com.example.friendlist.mytextview.MyTextView  
  28.         android:id="@+id/tv_description"  
  29.         android:layout_width="wrap_content"  
  30.         android:layout_height="wrap_content"  
  31.         android:layout_alignParentRight="true"  
  32.         android:layout_centerInParent="true"  
  33.         android:maxEms="8"  
  34.         android:singleLine="true"  
  35.         android:ellipsize="marquee" />  
  36.   
  37. </RelativeLayout>  

自定义adapter代码

Myadapter.class

  1. package com.example.friendlist.MyAdapter;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.example.friendlist.R;  
  6. import com.example.friendlist.peopleInformation.People_information;  
  7.   
  8. import android.content.Context;  
  9. import android.view.View;  
  10. import android.view.ViewGroup;  
  11. import android.webkit.WebView.FindListener;  
  12. import android.widget.BaseAdapter;  
  13. import android.widget.ImageView;  
  14. import android.widget.TextView;  
  15.   
  16. public class MyAdapter extends BaseAdapter{  
  17.     private List<People_information> mData;  
  18.     private Context context;  
  19.     public void setmData(List mData) {  
  20.         this.mData = mData;  
  21.     }  
  22.     public void setContext(Context context) {  
  23.         this.context = context;  
  24.     }  
  25.     //决定了列表item显示的个数  
  26.     @Override  
  27.     public int getCount() {  
  28.         // TODO Auto-generated method stub  
  29.         return mData.size();  
  30.     }  
  31.     //根据position获取对应item的内容  
  32.     @Override  
  33.     public Object getItem(int position) {  
  34.         // TODO Auto-generated method stub  
  35.         return mData.get(position);  
  36.     }  
  37.     //获取对应position的item的ID  
  38.     @Override  
  39.     public long getItemId(int position) {  
  40.         // TODO Auto-generated method stub  
  41.         return position;  
  42.     }  
  43.     //创建列表item视图  
  44.     @Override  
  45.     public View getView(int position, View convertView, ViewGroup arg2) {  
  46.         // TODO Auto-generated method stub  
  47.         View view=View.inflate(context, R.layout.item_fridends, null);  
  48.         //获取item对应的数据对象  
  49.         People_information people=mData.get(position);  
  50.         //初始化view  
  51.         ImageView iv_picture=(ImageView) view.findViewById(R.id.iv_picture);  
  52.         TextView tv_nickname=(TextView) view.findViewById(R.id.tv_nickname);  
  53.         TextView tv_description=(TextView) view.findViewById(R.id.tv_description);  
  54.         //绑定数据到view  
  55.         iv_picture.setImageResource(people.getDraw_Id());  
  56.         tv_nickname.setText(people.getNickname());  
  57.         tv_description.setText(people.getDescription());  
  58.         return view;  
  59.     }  
  60.   
  61. }  

我创建了一个个人信息的对象包括头像和昵称,个性签名,为了在加入List里面方便

  1. package com.example.friendlist.peopleInformation;  
  2.   
  3. public class People_information {  
  4.     private int draw_Id;  
  5.     private String nickname;  
  6.     private String description;  
  7.     public int getDraw_Id() {  
  8.         return draw_Id;  
  9.     }  
  10.     public void setDraw_Id(int draw_Id) {  
  11.         this.draw_Id = draw_Id;  
  12.     }  
  13.     public String getNickname() {  
  14.         return nickname;  
  15.     }  
  16.     public void setNickname(String nickname) {  
  17.         this.nickname = nickname;  
  18.     }  
  19.     public String getDescription() {  
  20.         return description;  
  21.     }  
  22.     public void setDescription(String description) {  
  23.         this.description = description;  
  24.     }  
  25. }  

然后就是MainActivity.class了,我把所有人的头像信息,昵称 个性签名都保存在了数组里面。

  1. package com.example.friendlist;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import com.example.friendlist.MyAdapter.MyAdapter;  
  7. import com.example.friendlist.peopleInformation.People_information;  
  8.   
  9. import android.os.Bundle;  
  10. import android.app.Activity;  
  11. import android.view.Menu;  
  12. import android.view.View;  
  13. import android.widget.AdapterView;  
  14. import android.widget.AdapterView.OnItemClickListener;  
  15. import android.widget.ListView;  
  16. import android.widget.Toast;  
  17.   
  18. public class FirendListActivity extends Activity {  
  19.     private int id[]={R.drawable.pic1,R.drawable.pic2,R.drawable.pic3,R.drawable.pic4  
  20.             ,R.drawable.pic5,R.drawable.pic6,R.drawable.pic7,R.drawable.pic8,R.drawable.pic9};  
  21.     private String nickName[]={"宁静","白衣未央","苏染","浮生物语","沫去丶","要想成功必须强大","你是病毒我却不忍用360",  
  22.             "超级无敌噼里啪啦大boss","止不住那流逝的年华"};   
  23.     private String description[]={"我的人生只是一道直线,转弯就是因为想遇见你","时间,让深的东西越来越深,让浅的东西越来越浅。","弱水三千,我只取一勺,可是到最后我悲惨的发现我的居然是漏勺。",  
  24.             "口上说着释然的人最终心里会疼痛到不能言语","我多想带你去看看以前还没爱上你的我","知道雪为什么是白色吗 因为它忘记了自己曾经的颜色",  
  25.             "好想轰轰烈烈爱她一遍,好想平平淡淡陪他一生","Say bye bye to my love !","只有在他无聊没人玩寂寞空虚的时候才会过来和你说几句话"  
  26.             };  
  27.     private ListView lv_view;  
  28.     private MyAdapter myAdapter;  
  29.     @Override  
  30.     protected void onCreate(Bundle savedInstanceState) {  
  31.         super.onCreate(savedInstanceState);  
  32.         setContentView(R.layout.view_listview);  
  33.         lv_view=(ListView) findViewById(R.id.lv_view);  
  34.         myAdapter=new MyAdapter();  
  35.         myAdapter.setContext(this);  
  36.         myAdapter.setmData(getList());  
  37.         lv_view.setAdapter(myAdapter);  
  38.         lv_view.setOnItemClickListener(new OnItemClickListener() {  
  39.   
  40.             @Override  
  41.             public void onItemClick(AdapterView<?> arg0, View arg1, int position,  
  42.                     long arg3) {  
  43.                 // TODO Auto-generated method stub  
  44.                 People_information people=(People_information) myAdapter.getItem(position);  
  45.                 Toast.makeText(FirendListActivity.this"昵称:"+people.getNickname()+"\n个性签名:"+people.getDescription(), 0).show();  
  46.             }  
  47.         });  
  48.     }  
  49.     private List<People_information> getList() {  
  50.         List <People_information>list=new ArrayList<People_information>();  
  51.         for(int i=0;i<id.length;i++){  
  52.             People_information people=new People_information();  
  53.             people.setDraw_Id(id[i]);  
  54.             people.setDescription(description[i]);  
  55.             people.setNickname(nickName[i]);  
  56.             list.add(people);  
  57.         }  
  58.         return list;  
  59.     }  
  60.   
  61. }  

就这么多。。

遇到的问题也写在了前面了。百度解决的  慢慢学习、、

android:listview实现qq,微信好友列表(头像,昵称,个性签名)

首先附上运行结果: 如果你没有学过listview请你先看一看基本知识。不想再说的那么细了 太多了。 首先是listview布局 ...
  • su20145104009
  • su20145104009
  • 2016年02月17日 12:12
  • 4616

python3.6 爬取微信好友列表和个性签名,绘制个性签名云图

python3.6 爬取微信好友列表和个性签名,绘制个性签名云图 1. 简要介绍 本次实验主要用到下面几个库 :   1)itchat---用于微信接口,实现生成QR码,用于微信扫描登陆  2...
  • iwangzhengchao
  • iwangzhengchao
  • 2018年01月19日 20:14
  • 149

Android ExpandableListView实现QQ好友列表效果

我们知道QQ好友列表分类使用ExpandableListView实现的,但是它在此基础上做改进,如打开分组,滑动时组标题会悬浮在最上端. 方便用户关闭分组.效果类似于下图: 实现代码如...
  • johnny901114
  • johnny901114
  • 2012年08月08日 09:04
  • 14256

Python玩转微信 个性签名生成词云图

本博客代码参照http://www.cnblogs.com/jiaoyu121/p/6944398.html。 运行如下代码之前,将下图的wechat.jpg放入F盘下,需安装itchat、jie...
  • zhonglixianyun
  • zhonglixianyun
  • 2017年10月13日 19:44
  • 369

分别嵌入 新浪微博、QQ、微信 做第三方授权登录 获取到头像 昵称等信息

下面提到的这三种 授权登录 是分别嵌入,不是 share sdk 或者友盟 其它的。 一、下载sdk 地址 1.新浪微博 新浪微博SDK 下载 2.QQ  QQ SDK 下载 3.微信 ...
  • liwenjie0912
  • liwenjie0912
  • 2016年04月04日 23:58
  • 7314

Android开发学习之QQ好友列表的实现

今天想和大家分享的是QQ好友列表的实现,我们知道,在默认情况下,QQ好友列表是处于收缩状态的,此时,列表显示好友分组名称。当我们单击分组时,列表处于展开状态,列表显示该分组下的项目。当再次单击分组时,...
  • qinyuanpei
  • qinyuanpei
  • 2014年03月01日 11:09
  • 6377

经典QQ自我介绍、个性签名

█ ☆我 ◢██◣ █  █* ◢██◣☆█ ≈ █*  █ █* 真█ █īΘ│█ █ *  █爱 █ ◥◣◢◤ █ 情 █人 ███◣◥██◤☆ ◥◤ * ◥██◤* ==============...
  • kof820
  • kof820
  • 2006年04月10日 15:19
  • 3522

android 实现QQ好友列表

在某些android开发群里,看到有些新手问怎么实现QQ好友列表,其实网上一搜挺多的。接触Android,也才一年的时间,大部分时间花在工作上(解bug。。。),界面上开发很少参与。自己维护的系统应用...
  • QQ83667664
  • QQ83667664
  • 2016年08月07日 20:01
  • 403

Qt之实现好友列表

今天朋友问我,好友列表该怎么实现。之前上网查阅的时候,我也发现
  • u010519432
  • u010519432
  • 2014年05月25日 23:33
  • 4611

通过QQ号码获取QQ头像、昵称以及空间头像

从网上搜罗了一堆获取QQ头像的方法,基本上都是通过简单的链接即可实现,在这里做下记录和总结! QQ头像、QQ昵称、QQ空间头像...
  • lddtime
  • lddtime
  • 2017年03月21日 23:07
  • 2817
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android:listview实现qq,微信好友列表(头像,昵称,个性签名)
举报原因:
原因补充:

(最多只允许输入30个字)