Android中使用listview实现qq微信好友列表

Android中使用listview实现qq微信好友列表,第1张

概述首先附上运行结果:如果你没有学过listview请你先看一看基本知识。不想再说的那么细了太多了。

首先附上运行结果:

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

首先是ListvIEw布局

<?xml version="1.0" enCoding="utf-8"?> <ListVIEw xmlns:androID="http://schemas.androID.com/apk/res/androID"  androID:ID="@+ID/lv_vIEw"  androID:layout_wIDth="match_parent"  androID:layout_height="match_parent"  androID:cachecolorHint="#00000000"  androID:background="@drawable/back"  androID:orIEntation="vertical" > </ListVIEw> 

在这里我为什么这样设置

androID:cachecolorHint="#00000000" 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)就可以了,当然为了美化是要牺牲一些效率的。

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

MyTextVIEw.class

package com.example.frIEndList.mytextvIEw; import androID.content.Context; import androID.util.AttributeSet; import androID.Widget.TextVIEw; public class MyTextVIEw extends TextVIEw{  public MyTextVIEw(Context context,AttributeSet attrs,int defStyle) {  super(context,attrs,defStyle);  // Todo auto-generated constructor stub  }  public MyTextVIEw(Context context,AttributeSet attrs) {  super(context,attrs);  // Todo auto-generated constructor stub  }  public MyTextVIEw(Context context) {  super(context);  // Todo auto-generated constructor stub  }  //一直return true  @OverrIDe  public boolean isFocused() {  // Todo auto-generated method stub  return true;  } } 

自定义adapter引用的布局文件

<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"  xmlns:tools="http://schemas.androID.com/tools"  androID:layout_wIDth="wrap_content"  androID:layout_height="wrap_content"  androID:paddingBottom="@dimen/activity_vertical_margin"  androID:paddingleft="@dimen/activity_horizontal_margin"  androID:paddingRight="@dimen/activity_horizontal_margin"  androID:paddingtop="@dimen/activity_vertical_margin"  tools:context=".FirendListActivity" >  <ImageVIEw  androID:ID="@+ID/iv_picture"  androID:layout_alignParentleft="true"  androID:layout_wIDth="60dp"  androID:layout_height="60dp"  androID:src="@drawable/pic1"  />  <com.example.frIEndList.mytextvIEw.MyTextVIEw  androID:ID="@+ID/tv_nickname"  androID:layout_wIDth="wrap_content"  androID:layout_height="wrap_content"  androID:layout_toRightOf="@ID/iv_picture"  androID:maxEms="4"  androID:singleline="true"  androID:ellipsize="marquee"  androID:layout_centerInParent="true" />  <com.example.frIEndList.mytextvIEw.MyTextVIEw  androID:ID="@+ID/tv_description"  androID:layout_wIDth="wrap_content"  androID:layout_height="wrap_content"  androID:layout_alignParentRight="true"  androID:layout_centerInParent="true"  androID:maxEms="8"  androID:singleline="true"  androID:ellipsize="marquee" /> </relativeLayout> 

自定义adapter代码

Myadapter.class

package com.example.frIEndList.MyAdapter; import java.util.List; import com.example.frIEndList.R; import com.example.frIEndList.peopleinformation.People_information; import androID.content.Context; import androID.vIEw.VIEw; import androID.vIEw.VIEwGroup; import androID.webkit.WebVIEw.FindListener; import androID.Widget.BaseAdapter; import androID.Widget.ImageVIEw; import androID.Widget.TextVIEw; public class MyAdapter extends BaseAdapter{  private List<People_information> mData;  private Context context;  public voID setmData(List mData) {  this.mData = mData;  }  public voID setContext(Context context) {  this.context = context;  }  //决定了列表item显示的个数  @OverrIDe  public int getCount() {  // Todo auto-generated method stub  return mData.size();  }  //根据position获取对应item的内容  @OverrIDe  public Object getItem(int position) {  // Todo auto-generated method stub  return mData.get(position);  }  //获取对应position的item的ID  @OverrIDe  public long getItemID(int position) {  // Todo auto-generated method stub  return position;  }  //创建列表item视图  @OverrIDe  public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup arg2) {  // Todo auto-generated method stub  VIEw vIEw=VIEw.inflate(context,R.layout.item_frIDends,null);  //获取item对应的数据对象  People_information people=mData.get(position);  //初始化vIEw  ImageVIEw iv_picture=(ImageVIEw) vIEw.findVIEwByID(R.ID.iv_picture);  TextVIEw tv_nickname=(TextVIEw) vIEw.findVIEwByID(R.ID.tv_nickname);  TextVIEw tv_description=(TextVIEw) vIEw.findVIEwByID(R.ID.tv_description);  //绑定数据到vIEw  iv_picture.setimageResource(people.getDraw_ID());  tv_nickname.setText(people.getNickname());  tv_description.setText(people.getDescription());  return vIEw;  } } 

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

package com.example.frIEndList.peopleinformation; public class People_information {  private int draw_ID;  private String nickname;  private String description;  public int getDraw_ID() {  return draw_ID;  }  public voID setDraw_ID(int draw_ID) {  this.draw_ID = draw_ID;  }  public String getNickname() {  return nickname;  }  public voID setNickname(String nickname) {  this.nickname = nickname;  }  public String getDescription() {  return description;  }  public voID setDescription(String description) {  this.description = description;  } } 

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

package com.example.frIEndList; import java.util.ArrayList; import java.util.List; import com.example.frIEndList.MyAdapter.MyAdapter; import com.example.frIEndList.peopleinformation.People_information; import androID.os.Bundle; import androID.app.Activity; import androID.vIEw.Menu; import androID.vIEw.VIEw; import androID.Widget.AdapterVIEw; import androID.Widget.AdapterVIEw.OnItemClickListener; import androID.Widget.ListVIEw; import androID.Widget.Toast; public class FirendListActivity extends Activity {  private int ID[]={R.drawable.pic1,R.drawable.pic2,R.drawable.pic3,R.drawable.pic4,R.drawable.pic5,R.drawable.pic6,R.drawable.pic7,R.drawable.pic8,R.drawable.pic9};  private String nickname[]={"宁静","白衣未央","苏染","浮生物语","沫去丶","要想成功必须强大","你是病毒我却不忍用360","超级无敌噼里啪啦大boss","止不住那流逝的年华"};  private String description[]={"我的人生只是一道直线,转弯就是因为想遇见你","时间,让深的东西越来越深,让浅的东西越来越浅。","弱水三千,我只取一勺,可是到最后我悲惨的发现我的居然是漏勺。","口上说着释然的人最终心里会疼痛到不能言语","我多想带你去看看以前还没爱上你的我","知道雪为什么是白色吗 因为它忘记了自己曾经的颜色","好想轰轰烈烈爱她一遍,好想平平淡淡陪他一生","Say bye bye to my love !","只有在他无聊没人玩寂寞空虚的时候才会过来和你说几句话"  };  private ListVIEw lv_vIEw;  private MyAdapter myAdapter;  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentVIEw(R.layout.vIEw_ListvIEw);  lv_vIEw=(ListVIEw) findVIEwByID(R.ID.lv_vIEw);  myAdapter=new MyAdapter();  myAdapter.setContext(this);  myAdapter.setmData(getList());  lv_vIEw.setAdapter(myAdapter);  lv_vIEw.setonItemClickListener(new OnItemClickListener() {  @OverrIDe  public voID onItemClick(AdapterVIEw<?> arg0,VIEw arg1,int position,long arg3) {  // Todo auto-generated method stub  People_information people=(People_information) myAdapter.getItem(position);  Toast.makeText(FirendListActivity.this,"昵称:"+people.getNickname()+"\n个性签名:"+people.getDescription(),0).show();  }  });  }  private List<People_information> getList() {  List <People_information>List=new ArrayList<People_information>();  for(int i=0;i<ID.length;i++){  People_information people=new People_information();  people.setDraw_ID(ID[i]);  people.setDescription(description[i]);  people.setNickname(nickname[i]);  List.add(people);  }  return List;  } } 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程小技巧!

总结

以上是内存溢出为你收集整理的Android中使用listview实现qq/微信好友列表全部内容,希望文章能够帮你解决Android中使用listview实现qq/微信好友列表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1146492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存