生活随笔
收集整理的這篇文章主要介紹了
使用BaseAdapter实现复杂的ListView
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
步驟
使用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. 給按鈕注冊點擊監聽器。可以用Toast或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();?? ????}??? }??
效果圖
總結
以上是生活随笔為你收集整理的使用BaseAdapter实现复杂的ListView的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。