生活随笔
收集整理的這篇文章主要介紹了
【转】【Android】使用BaseAdapter实现复杂的ListView
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文網址:http://blog.csdn.net/jueblog/article/details/11857281
使用BaseAdapter實現復雜的ListView的步驟:
1. 數據你要準備好 List getData()。
2. 繼承ListActivity專有屏,不再需要setContentView(xxx)。?
3. 創建一個繼承自BaseAdapter的類。
4. 為List綁定適配器 setListAdapter(adapter)。
5. 用傳統的方式來覆寫適配器的getView函數 ?(從參數convertView里映射布局文件,find各個控件填充數據)。
6. 改寫:加入ViewHolder類(定義n個控件的聲明) 。 ?用convertView.setTag(viewHolder)在View和Object之間進行關聯.。
7. 給按鈕注冊點擊監聽器??梢杂肨oast或AlertDialogue彈出選擇項的數據。
?
friend_list.xml文件
?
[html]?view plaincopy
<?xml?version="1.0"?encoding="utf-8"?>??<LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"??????android:layout_width="match_parent"??????android:layout_height="fill_parent"??????android:background="#fff"??????android:orientation="vertical"?>??????<TextView??????????android:id="@+id/textView1"??????????android:layout_width="match_parent"??????????android:layout_height="50dp"??????????android:text="微信"???????????android:background="#2B3439"??????????android:gravity="center"??????????android:textSize="20sp"??????????android:textColor="#FFFFFF"/>????????????<LinearLayout??????????android:layout_width="match_parent"??????????android:layout_height="wrap_content"???????????android:layout_marginLeft="18dp"??????????android:layout_marginRight="18dp"??????????android:layout_marginTop="2dp"??????????android:layout_marginBottom="2dp"??????????android:background="@drawable/btn_style_four_normal">??????????<ImageView??????????????android:id="@+id/imageView1"??????????????android:layout_width="wrap_content"??????????????android:layout_height="wrap_content"??????????????android:src="@drawable/sm_searchbtn"???????????????android:layout_marginRight="10dp"/>??????????<EditText??????????????android:id="@+id/editText1"??????????????android:layout_width="match_parent"??????????????android:layout_height="35dp"??????????????android:background="@null"??????????????android:ems="10"?>??????????????<requestFocus?/>??????????</EditText>??????</LinearLayout>????????<ListView??????????android:id="@+id/listView1"??????????android:layout_width="match_parent"??????????android:paddingBottom="50dp"??????????android:cacheColorHint="#00000000"????????????android:layout_height="match_parent"?>??????</ListView>????</LinearLayout>?? ?
friend_list_item.xml文件
?
?
[html]?view plaincopy
<?xml?version="1.0"?encoding="utf-8"?>??<LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"??????android:layout_width="fill_parent"??????android:layout_height="80dp"??????android:orientation="horizontal"??????android:padding="5dip"??????android:paddingBottom="15dp"?>????????<ImageView??????????android:id="@+id/img"??????????android:layout_width="wrap_content"??????????android:layout_height="wrap_content"??????????android:layout_margin="5dp"?/>????????<LinearLayout??????????android:layout_width="fill_parent"??????????android:layout_height="wrap_content"??????????android:orientation="vertical"?>????????????<LinearLayout??????????????android:layout_width="fill_parent"??????????????android:layout_height="wrap_content"??????????????android:orientation="horizontal"?>????????????????<TextView??????????????????android:id="@+id/title"??????????????????android:layout_width="wrap_content"??????????????????android:layout_height="wrap_content"??????????????????android:textColor="#000"??????????????????android:textSize="20sp"?/>????????????????<TextView??????????????????android:id="@+id/time"??????????????????android:layout_width="wrap_content"??????????????????android:layout_height="wrap_content"??????????????????android:layout_marginLeft="110dp"??????????????????android:textColor="#000"??????????????????android:textSize="18sp"?/>??????????</LinearLayout>????????????<TextView??????????????android:id="@+id/info"??????????????android:layout_width="wrap_content"??????????????android:layout_height="fill_parent"??????????????android:layout_marginTop="3dp"??????????????android:textColor="#000"??????????????android:textSize="15sp"?/>??????</LinearLayout>????</LinearLayout>?? ?
WeixinActivity.java文件
?
?
[java]?view plaincopy
package?com.app.weixin;????import?java.util.ArrayList;??import?java.util.HashMap;??import?java.util.List;????import?com.app.wexin.R;????import?android.app.Activity;??import?android.app.AlertDialog;??import?android.content.Context;??import?android.content.DialogInterface;??import?android.content.Intent;??import?android.os.Bundle;??import?android.view.LayoutInflater;??import?android.view.View;??import?android.view.ViewGroup;??import?android.widget.BaseAdapter;??import?android.widget.Button;??import?android.widget.ImageView;??import?android.widget.ListView;??import?android.widget.TextView;????public?class?WeixinActivity?extends?Activity?{??????private?ImageView?img;??????private?List<HashMap<String,?Object>>?mData;??????private?ListView?listView;????????@Override??????protected?void?onCreate(Bundle?savedInstanceState)?{??????????super.onCreate(savedInstanceState);??????????setContentView(R.layout.friend_list);??????????mData?=?getData();????????MyAdapter?adapter?=?new?MyAdapter(this);??????????????????listView?=?(ListView)?findViewById(R.id.listView1);????????listView.setAdapter(adapter);????}????????????public?class?MyAdapter?extends?BaseAdapter?{??????????private?LayoutInflater?mInflater;??????????public?MyAdapter(Context?context)?{??????????????this.mInflater?=?LayoutInflater.from(context);??????????}????????????????????@Override??????????public?int?getCount()?{??????????????return?mData.size();????????}????????????@Override??????????public?Object?getItem(int?arg0)?{??????????????return?null;??????????}????????????@Override??????????public?long?getItemId(int?arg0)?{??????????????return?0;??????????}????????????@Override??????????public?View?getView(int?position,?View?convertView,?ViewGroup?parent)?{??????????????convertView?=?mInflater.inflate(R.layout.friend_list_item,?null);????????????TextView?title?=?(TextView)?convertView.findViewById(R.id.title);????????????title.setText(mData.get(position).get("title").toString());????????????TextView?time?=?(TextView)?convertView.findViewById(R.id.time);????????????time.setText(mData.get(position).get("time").toString());????????????TextView?info?=?(TextView)?convertView.findViewById(R.id.info);??????????????info.setText(mData.get(position).get("info").toString());??????????????img?=?(ImageView)?convertView.findViewById(R.id.img);??????????????img.setBackgroundResource((Integer)?mData.get(position).get("img"));??????????????return?convertView;??????????}??????}??????????private?List<HashMap<String,?Object>>?getData()?{??????????????????ArrayList<HashMap<String,?Object>>?list?=?new?ArrayList<HashMap<String,?Object>>();??????????HashMap<String,?Object>?map?=?null;??????????for?(int?i?=?1;?i?<=?40;?i++)?{??????????????map?=?new?HashMap<String,?Object>();??????????????map.put("title",?"人物"?+?i);??????????????map.put("time",?"9月20日");??????????????map.put("info",?"我通過了你的好友驗證請求");??????????????map.put("img",?R.drawable.pic_person);??????????????list.add(map);??????????}????????????return?list;??????}??????public?void?showInfo(int?position){??????????getData();??????}???}?? ?
效果圖
?
?
轉載于:https://www.cnblogs.com/wi100sh/p/4461675.html
總結
以上是生活随笔為你收集整理的【转】【Android】使用BaseAdapter实现复杂的ListView的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。