android:listview實現qq,微信好友名單(頭像,暱稱,個性簽名)

來源:互聯網
上載者:User

android:listview實現qq,好友名單(頭像,暱稱,個性簽名)

首先附上運行結果:

如果你沒有學過listview請你先看一看基本知識。不想再說的那麼細了 太多了。

首先是listview布局

 

<!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%2D%2D%3E--><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  @Overridepublic boolean isFocused() {// TODO Auto-generated method stubreturn 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"></com.example.friendlist.mytextview.mytextview></com.example.friendlist.mytextview.mytextview></imageview></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 mData;private Context context;public void setmData(List mData) {this.mData = mData;}public void setContext(Context context) {this.context = context;}//決定了列表item顯示的個數@Overridepublic int getCount() {// TODO Auto-generated method stubreturn mData.size();}//根據position擷取對應item的內容@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn mData.get(position);}//擷取對應position的item的ID@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}    //建立列表item視圖@Overridepublic View getView(int position, View convertView, ViewGroup arg2) {// TODO Auto-generated method stubView view=View.inflate(context, R.layout.item_fridends, null);//擷取item對應的資料對象People_information people=mData.get(position);//初始化viewImageView 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);//綁定資料到viewiv_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;@Overrideprotected 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() {@Overridepublic void onItemClick(AdapterView arg0, View arg1, int position,long arg3) {// TODO Auto-generated method stubPeople_information people=(People_information) myAdapter.getItem(position);Toast.makeText(FirendListActivity.this, "暱稱:"+people.getNickname()+"\n個性簽名:"+people.getDescription(), 0).show();}});}private List getList() {List list=new ArrayList();for(int i=0;i就這麼多。。

遇到的問題也寫在了前面了。百度解決的 慢慢學習、、

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.