国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中BaseAdapter的用法分析與理解

2019-12-12 05:37:27
字體:
來源:轉載
供稿:網友

本文實例分析了Android中BaseAdapter的用法。分享給大家供大家參考,具體如下:

最近做一個項目,項目中用到了ListView,ListView最重要的就是綁定數據,這個數據由Adapter來提供,這里我重寫了BaseAdapter這個類來實現自己的menuAdapter代碼如下:

package org.leepood.lanorder;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.leepood.xmlparse.xmlParse;import android.view.LayoutInflater;import android.content.Context;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class menuAdapter extends BaseAdapter { private LayoutInflatermInflater; private Context context;  privateList<Menu> menus;  publicmenuAdapter(List<Menu> menus,Context context)  {    this.menus=menus;    this.mInflater =LayoutInflater.from(context);  }  public int getCount() {    return menus.size();  }  public Object getItem(intposition) {    return menus.get(position);  }  public long getItemId(intposition) {    return position;  }  public View getView(intposition, View convertView, ViewGroup parent) {    menuAdapterViewholder = null;//自定義的一個類用來緩存convertview    if (convertView ==null) {      holder=newmenuAdapterView();      convertView =mInflater.inflate(R.layout.menu, null);      holder.name =(TextView)convertView.findViewById(R.id.txtname);      holder.price =(TextView)convertView.findViewById(R.id.txtprice);      holder.description =(TextView)convertView.findViewById(R.id.txtdescription);      convertView.setTag(holder);      //Log.i("tag", "run once");    }else {      holder = (menuAdapterView)convertView.getTag();    }    holder.name.setText(String.valueOf(position));    holder.price.setText((String)menus.get(position).getPrice());    holder.description.setText((String)menus.get(position).getDescription());    return convertView;  }}

其中BaseAdapter需要重寫的方法:

getCount(),getItem(int position),getItemId(int position),getView(int position, View convertView, ViewGroup parent)

流程分析:

listView在開始繪制的時候,系統首先調用getCount()函數,根據他的返回值得到 listView的長度,然后根據這個長度,調用getView()逐一繪制每一行。如果你的 getCount()返回值是0的話,列表將不顯示同樣return 1,就只顯示一行。系統顯示列表時,首先實例化一個適配器(這里將實例化自定義的適配器)。當手動完成適配時,必須手動映射數據,這需要重寫getView()方 法。系統在繪制列表的每一行的時候將調用此方法。getView()有三個參數,position表示將顯示的是第幾行,covertView是從布局文 件中inflate來的布局。我們用LayoutInflater的方法將定義好的item.xml文件提取成View實例用來顯示。然后將xml文件中 的各個組件實例化(簡單的findViewById()方法)。這樣便可以將數據對應到各個組件上了。但是按鈕為了響應點擊事件,需要為它添加點擊監聽 器,這樣就能捕獲點擊事件。至此一個自定義的listView就完成了,現在讓我們回過頭從新審視這個過程。系統要繪制ListView了,他首先獲得要 繪制的這個列表的長度,然后開始繪制第一行,怎么繪制呢?調用getView()函數。在這個函數里面首先獲得一個View(實際上是一個 ViewGroup),然后再實例并設置各個組件,顯示之。好了,繪制完這一行了。那再繪制下一行,直到繪完為止。

更多關于Android相關內容感興趣的讀者可查看本站專題:《Android控件用法總結》、《Android視圖View技巧總結》、《Android操作SQLite數據庫技巧總結》、《Android操作json格式數據技巧總結》、《Android數據庫操作技巧總結》、《Android文件操作技巧匯總》、《Android編程開發之SD卡操作方法匯總》、《Android開發入門與進階教程》及《Android資源操作技巧匯總

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平和县| 二手房| 晋中市| 深州市| 昌都县| 志丹县| 理塘县| 杂多县| 绥江县| 开平市| 华容县| 门头沟区| 体育| 东方市| 正镶白旗| 内江市| 白银市| 和政县| 苏尼特左旗| 斗六市| 通辽市| 白水县| 左贡县| 崇州市| 秭归县| 蒙自县| 浏阳市| 五家渠市| 阿拉善左旗| 沅陵县| 漠河县| 临朐县| 东乌珠穆沁旗| 沈阳市| 深泽县| 定远县| 屏边| 铜陵市| 木兰县| 扶余县| 沾益县|