最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android中BaseAdapter的用法分析與理解

 更新時間:2016年08月18日 10:01:13   作者:與時俱進  
這篇文章主要介紹了Android中BaseAdapter的用法分析與理解,結(jié)合一個項目開發(fā)中BaseAdapter的使用分析了BaseAdapter的功能、作用及用法理解,需要的朋友可以參考下

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

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

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

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

相關文章

最新評論

大新县| 绩溪县| 柳河县| 晋江市| 阳新县| 庆元县| 洞口县| 昌平区| 同德县| 措美县| 嘉祥县| 博客| 广平县| 肥城市| 鄂伦春自治旗| 北流市| 错那县| 京山县| 扶沟县| 龙岩市| 卢湾区| 凤山市| 黑龙江省| 滨州市| 宣威市| 射阳县| 张家川| 横山县| 济阳县| 云和县| 怀化市| 怀仁县| 龙门县| 嵊泗县| 古蔺县| 莎车县| 兴城市| 林州市| 平南县| 桃园市| 普兰店市|