日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【转】【Android】使用BaseAdapter实现复杂的ListView

發布時間:2025/5/22 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】【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"?>??
  • <!--?這是范例ListView的布局文件,出了ListView,還可以放置其他控件?-->??
  • <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??
  • ????????listView.setAdapter(adapter);//為ListView控件綁定適配器??
  • ????}??
  • ??
  • ????/**?自定義適配器?*/??
  • ????public?class?MyAdapter?extends?BaseAdapter?{??
  • ????????private?LayoutInflater?mInflater;//?動態布局映射??
  • ??
  • ????????public?MyAdapter(Context?context)?{??
  • ????????????this.mInflater?=?LayoutInflater.from(context);??
  • ????????}??
  • ??
  • ????????//?決定ListView有幾行可見??
  • ????????@Override??
  • ????????public?int?getCount()?{??
  • ????????????return?mData.size();//?ListView的條目數??
  • ????????}??
  • ??
  • ????????@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);//根據布局文件實例化view??
  • ????????????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;??
  • ????????}??
  • ????}??
  • ????//?初始化一個List??
  • ????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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。