iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android中使用listview实现qq/微信好友列表
  • 829
分享到

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

列表listviewAndroid 2022-06-06 01:06:49 829人浏览 独家记忆
摘要

首先附上运行结果: 如果你没有学过listview请你先看一看基本知识。不想再说的那么细了 太多了。 首先是listview布局 <?xml version

首先附上运行结果:

如果你没有学过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模拟微信好友功能android 实现类似微信缓存和即时更新好友头像示例Android仿微信、QQ附近好友雷达扫描效果Android实现分享微信好友及出现闪退的解决办法Android仿微信雷达辐射搜索好友(逻辑清晰实现简单)Android仿微信@好友功能 输入@跳转、删除整块


--结束END--

本文标题: Android中使用listview实现qq/微信好友列表

本文链接: https://www.lsjlt.com/news/21869.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android中使用ListView模拟微信好友功能
    效果图:分析:创建listView创建数据创建适配器  将数据放到呈现数据的容器里面。  将这个容器(带数据)连接适配器。    其实是直接在我们自己写的adapter的getView重载方法中返回连接的view。    View view...
    99+
    2023-05-30
    android listview 微信好友
  • 使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
    1.视图模型介绍 在Qml中、常见的View视图有: ListView: 列表视图,视图中数据来自ListModel、XmlListModel或c++中继承自QAbstra...
    99+
    2024-04-02
  • HTML5怎么实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
    小编给大家分享一下HTML5怎么实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!这是分享按钮:<button onclick="call()&q...
    99+
    2023-06-09
  • Android Studio实现QQ的注册登录和好友列表跳转
    一、项目概述 本次项目主要包含了注册、登录和好友列表三个界面以及之间相互跳转。其中好友列表界面设计的很详细,有好友头像和消息内容。用户先点击注册按钮进入注册界面,输入完账号和密码后,...
    99+
    2024-04-02
  • Android Studio如何实现QQ的注册登录和好友列表跳转
    这篇文章主要介绍Android Studio如何实现QQ的注册登录和好友列表跳转,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、项目概述本次项目主要包含了注册、登录和好友列表三个界面以及之间相互跳转。其中好友列表界...
    99+
    2023-06-15
  • Android如何实现仿微信@好友功能
    这篇文章主要介绍Android如何实现仿微信@好友功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先上个效果图就是这么个功能1. 分析需求输入@跳转到联系人界面,选中一个或者多个好友返回到当前界面按退格键删除整块内...
    99+
    2023-05-30
    android
  • Android实战ShareSDk的使用,实现一键分享微信好友
    要在Android应用中实现一键分享到微信好友,你可以使用ShareSDK库。下面是使用ShareSDK实现一键分享微信好友的步骤:...
    99+
    2023-09-21
    Android
  • 微信小程序如何实现好友列表字母列表跳转对应位置
    这篇文章将为大家详细讲解有关微信小程序如何实现好友列表字母列表跳转对应位置,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。微信小程序开发之好友列表字母列表跳转对应位置前言:...
    99+
    2024-04-02
  • listview在android中使用怎么实现多列模版
    listview在android中使用怎么实现多列模版?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。android listview多列模版<LinearLayout...
    99+
    2023-05-31
    android listview roi
  • ListView列表组件如何在Android项目中使用
    ListView列表组件如何在Android项目中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。ListView是一种非常常见的一个组件,以垂直列表的形式显示列表项。而...
    99+
    2023-05-31
    android listview roi
  • 如何在android中利用listview实现一个列表展示效果
    今天就跟大家聊聊有关如何在android中利用listview实现一个列表展示效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。设置条目点击事件package com.it...
    99+
    2023-05-31
    android listview roi
  • Android中怎么实现微信朋友圈拍照上传功能
    Android中怎么实现微信朋友圈拍照上传功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. PhotoPicker的使用这是一个支持选择多张图片,点击图片放大,图片之间左...
    99+
    2023-05-30
  • 微信小程序中如何实现下拉列表
    这篇文章主要介绍微信小程序中如何实现下拉列表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、效果图二、实现原理跟网页的下拉列表实现是一样的,刚刚开始默认下拉的内容的是不显示的(di...
    99+
    2024-04-02
  • Android中如何实现SQLite事务处理结合Listview列表显示功能
    小编给大家分享一下Android中如何实现SQLite事务处理结合Listview列表显示功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:前面的文章里...
    99+
    2023-05-30
    android sqlite listview
  • Android中怎么使用ListView实现滚轮动画效果
    今天就跟大家聊聊有关Android中怎么使用ListView实现滚轮动画效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。   private ...
    99+
    2023-05-31
    android listview
  • Android中怎么使用Spinner实现一个列表选择框
    本篇文章为大家展示了Android中怎么使用Spinner实现一个列表选择框,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android  Spinner列表选择框的应用Spinner 是...
    99+
    2023-05-30
    android spinner
  • Android中使用eventbus3.0实现fragment通信
    今天就跟大家聊聊有关Android中使用eventbus3.0实现fragment通信,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.概述在之前的博文中简单介绍过如何实现fragm...
    99+
    2023-05-31
    android eventbus3.0 fragment
  • 微信小程序中怎么实现一个固定表头、列表格组件
    微信小程序中怎么实现一个固定表头、列表格组件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实现思路开始想用三个ScrollView去实现滚动联动,固定表头、列的话,表格内容...
    99+
    2023-06-20
  • Android使用RecyclerView实现列表数据选择操作
    这些时间做安卓盒子项目,因为安卓电视的显示器比较大,所以一个界面显示 很多数据 ,最多的时候,一个Actvity中用到了好几个RecyclerView。在RecyclerView中实现Item选中处理时,发现用CheckBox的OnChec...
    99+
    2023-05-31
    android recyclerview checkbox
  • 使用Android怎么实现app分享文件到微信
    使用Android怎么实现app分享文件到微信?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。两种实现方案:使用WXFileObject构造分享方法发送到微信;2...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作