Android中使用listview實現(xiàn)qq/微信好友列表
首先附上運行結(jié)果:

如果你沒有學(xué)過listview請你先看一看基本知識。不想再說的那么細(xì)了 太多了。
首先是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>
在這里我為什么這樣設(shè)置
android:cacheColorHint="#00000000" android:background="@drawable/back"
在Android中,ListView是最常用的一個控件,在做UI設(shè)計的時候,很多人希望能夠改變一下它的背景,使他能夠符合整體的UI設(shè)計,改變背景背很簡單只需要準(zhǔn)備一張圖片然后指定屬性android:background="@drawable/bg",不過不要高興地太早,當(dāng)你這么做以后,發(fā)現(xiàn)背景是變了,但是當(dāng)你拖動,或者點擊list空白位置的時候發(fā)現(xiàn)ListItem都變成黑色的了。
這是什么原因?qū)е碌哪??起初我以為是因為我把背景設(shè)置成了白色,然后產(chǎn)生色差導(dǎo)致的,后來查閱資料發(fā)現(xiàn),其實這個要從Listview的效果說起,默認(rèn)的ListItem背景是透明的,而ListView的背景是固定不變的,所以在滾動條滾動的過程中如果實時地去將當(dāng)前每個Item的顯示內(nèi)容跟背景進(jìn)行混合運算,所以android系統(tǒng)為了優(yōu)化這個過程用,就使用了一個叫做android:cacheColorHint的屬性,在黑色主題下默認(rèn)的顏色值是#191919,所以就出現(xiàn)了剛才的畫面,有一半是黑色的,那怎么辦呢?
如果你只是換背景的顏色的話,可以直接指定android:cacheColorHint為你所要的顏色,如果你是用圖片做背景的話,那也只要將android:cacheColorHint指定為透明(#00000000)就可以了,當(dāng)然為了美化是要犧牲一些效率的。
由于我們使用的好友列表向比較復(fù)雜,一個ImageView兩個TextView.,所以要自定義adapter.下面的TextView是我自己創(chuàng)建的TextView為了實現(xiàn)昵稱和個性簽名的滾動效果。由于占用資源太多 不推薦所有人的昵稱和個性簽名都滾動哦,只要獲得焦點的滾動就好了。我就不改了 交給你了
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顯示的個數(shù)
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();
}
//根據(jù)position獲取對應(yīng)item的內(nèi)容
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mData.get(position);
}
//獲取對應(yīng)position的item的ID
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
//創(chuàng)建列表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對應(yīng)的數(shù)據(jù)對象
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);
//綁定數(shù)據(jù)到view
iv_picture.setImageResource(people.getDraw_Id());
tv_nickname.setText(people.getNickname());
tv_description.setText(people.getDescription());
return view;
}
}
我創(chuàng)建了一個個人信息的對象包括頭像和昵稱,個性簽名,為了在加入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了,我把所有人的頭像信息,昵稱 個性簽名都保存在了數(shù)組里面。
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
MaterialApp?Flutter?應(yīng)用全局配置與主題管理詳解
這篇文章主要為大家介紹了MaterialApp?Flutter?應(yīng)用全局配置與主題管理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
Android 自定義Dialog去除title導(dǎo)航欄的解決方法
今天小編就為大家分享一篇Android 自定義Dialog去除title導(dǎo)航欄的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
android使用ExpandableListView控件實現(xiàn)小說目錄效果的例子
這篇文章主要介紹了android使用ExpandableListView控件實現(xiàn)小說目錄效果的例子,還可以實現(xiàn)二級列表展示效果,需要的朋友可以參考下2014-07-07
Android實現(xiàn)仿美團(tuán)、順豐快遞數(shù)據(jù)加載效果
本片文章教給大家用Android實現(xiàn)美團(tuán)和順豐快遞APP的數(shù)據(jù)加載的動畫效果,有興趣的朋友跟著學(xué)習(xí)嘗試下吧。2017-12-12
android studio3.3.1代碼提示忽略大小寫的設(shè)置
這篇文章主要介紹了android studio3.3.1代碼提示忽略大小寫的設(shè)置,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
android scrollview 滑動到頂端或者指定位置的實現(xiàn)方法
下面小編就為大家?guī)硪黄猘ndroid scrollview 滑動到頂端或者指定位置的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04

