Android——繼承SimpleAdapter重寫自己的getView
在上篇Android——ListView實現簡單列表 中,利用SimpleAdapter實現了簡單的列表繫結。在本文中,主要是通過重寫getView方法,來看下adapter內部繫結資料大致是個什麼流程。
首先加入實現類:
class mTestAdapter extends SimpleAdapter {
private Context context; /*執行環境*/
ArrayList<HashMap<String, String>> listItem; /*資料來源*/
private LayoutInflater listContainer; // 檢視容器
class ListItemView { // 自定義控制元件集合
public TextView txtName;
}
/*construction function*/
public mTestAdapter(Context context,
ArrayList<HashMap<String, String>> data, int resource,
String[] from, int[] to) {
super(context, data, resource, from, to);
this.listContainer = LayoutInflater.from(context); // 建立檢視容器並設定上下文
this.context=context;
listItem=data;
}
/**
* @see android.widget.Adapter#getCount()
*/
public int getCount() {
return listItem.size();
}
/**
* @see android.widget.Adapter#getItem(int)
*/
public Object getItem(int position) {
return listItem.get(position);
}
/**
* @see android.widget.Adapter#getItemId(int)
*/
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int mPosition = position;
ListItemView listItemView = null;
if (convertView == null) {
convertView = listContainer.inflate(R.layout.listview_item, null);//載入佈局
listItemView = new ListItemView();
/*初始化控制元件容器集合*/
listItemView.txtName=(TextView) convertView
.findViewById(R.id.name);
// 設定控制元件集到convertView
convertView.setTag(listItemView);
}else{
listItemView=(ListItemView)convertView.getTag();//利用快取的View
}
/*
* PS:
* 這裡放入對控制元件的屬性及事件進行初始化設定的操作
* */
/*TextView設定點選事件*/
listItemView.txtName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "點選了"+mPosition, Toast.LENGTH_SHORT).show();
}
});
//設定text的值(用position標記來看的更清楚點兒)
listItemView.txtName.
setText(mPosition+" "+listItem.get(mPosition).get("ItemName"));
return convertView;
}
}
}
我們用這個實現類來取代我們之前用的SimpleAdapter.
mTestAdapter listItemAdapter=new mTestAdapter(getBaseContext(),/*指明瞭SimpleAdapter關聯的View的執行環境,也就是當前的Activity*/
listItem,/*由Map組成的List,在List中的每條目對應ListView的一行,每一個Map中包含的就是所有在from引數中指定的key*/
R.layout.listview_item,/*定義列表項的佈局檔案的資源ID,該資原始檔至少應該包含在to引數中定義的ID*/
new String[]{"ItemName"},/*將被新增到Map對映上的Key*/
new int[] {R.id.name}/*將繫結資料的檢視的Id跟from引數對應,這些被繫結的檢視元素應該全是TextView*/
);
//設定介面卡
之後,run下,看看我們加的toast:
相關推薦
Android——繼承SimpleAdapter重寫自己的getView
在上篇Android——ListView實現簡單列表 中,利用SimpleAdapter實現了簡單的列表繫結。在本文中,主要是通過重寫getView方法,來看下adapter內部繫結資料大致是個什麼流程。 首先加入實現類:c
android-繼承BaseAdapter--自己定義適配器,getView運行多次的解決方法
能夠 popu con data ssa baseadapt tracking you idt 定義的getView運行多次的ListView布局: <ListView android:id="@+id/lv_messages"
[chromium][browser][idea][open] 如何重寫自己的android.provider.Browser
AOSP的Browser中使用的是系統的android.provider.Browser,如果想自己管理一套收藏夾和訪問歷史,可以試著重寫一下 1、新包中新增frameworks\base\core\java\android\provider中的BrowserContract.java和B
android-繼承BaseAdapter--自定義介面卡,getView執行多次的解決方法
定義的getView執行多次的ListView佈局: <ListView android:id="@+id/lv_messages" android:layout
Android-BaseAdapter中重寫getview的心得以及發現convertView回收的機制
http://blog.csdn.net/pkxiuluo01/article/details/7380974 以前一直在用BaseAdapter,對於其中的getview方法的重寫一直不太清楚。今天終於得以有空來探究它的詳細機制。 下面先講講我遇到的幾個問題: 一.V
Java 繼承與重寫、重載
重載 進行 cnblogs 向上造型 用法 編譯 根據 ide 調用 1.類的繼承 1)繼承 父類:所有子類所共有的屬性和行為 子類:子類所特有的屬性和行為 通過extends關鍵字來實現類的繼承 子類(Sub class)可以繼承父類(Super class)的
Java多態機制和繼承中重寫重載
htm uil 不同的 運行期 表現 決定 this targe 程序 關於Java中多態機制 http://www.cnblogs.com/chenssy/p/3372798.html 這篇博文講的很透徹 大體意思是 多態定義: 多態就是指程序中定義的引用變量所指向的具體
慕課網Java入門第二季6.1 達達租車系統,使用到繼承、重寫、多態、toString函數
ati next println 構造方法 static class days 慕課網 mage 為了方便理解,畫了個UML圖,可以參考一下為了方便理解,畫了個UML圖,可以參考一下 定義Car類型:載人+載貨 public class Car { int id;
java知識點回顧——繼承、重寫、重載、多態
extends 方法 per class 相同 重載 實現 修飾 等級 1、繼承是java面向對象編程技術的一塊基石,因為它允許創建分等級層次的類。修飾符 class 子類名 extends 父類名super.方法名(參數列表); 2、重寫是子類對父類的允許訪問的方法的實現
android——使用Ijkplayer打造自己的超級電視臺播放軟件
dst sdn player tails roi 播放 axu tps get 圖就不上了。想看效果,直接前往觀看: https://www.pgyer.com/cjdst 參考帖子: http://blog.csdn.net/huaxun66/article/detail
oop繼承與重寫筆記一
oop繼承與重寫筆記一父類:public class Animal {int age; //年齡double height; //身高double weight; //體重Animal(){System.out.println("一個動物誕生");}Animal(int age,double height
typeScript(7)--ts面向物件程式設計,繼承和重寫
類的繼承 在使用TypeScript這門語言時,一個最重要基本功就是面向物件程式設計,那對類的擴充套件就變的格外重要,擴充套件經常使用的手段就是繼承。 繼承:允許我們建立一個類(子類),從已有的類(父類)上繼承所有的屬性和方法,子類可以新建父類中沒有的屬性和方法。
9屬性和函式的私有化,繼承,重寫
在屬性名和方法名前加"__"匿名(私有化),否則是類似C++的公有化 然後只能通過類內的方法去呼叫私有的屬性和方法 繼承: 子類繼承父類的非匿名方法和非匿名類屬性(如若子類為定義__init__()時,會繼承父類的__init__()方法,這樣可以“繼承”__
python繼承和重寫init方法--例項
一、 子類不重寫__init__ , 例項化子類時,會自動呼叫父類定義的__init__ 二、 子類重寫了__init__時,例項化子類,就不會呼叫父類已經定義的__init__ 三、為了能使用或擴充套件父類的行為,要顯示呼叫父類的__init__方法,有以下兩種呼叫方式。 1
BAT大咖助力 全面升級Android面試筆記 (自己補充)
https://blog.csdn.net/qq_23575921/article/details/78947051 原文 補充 Android任務棧 singletop(棧頂複用):Android系統內建的書籤應用 singletask(棧內複用):商城首頁,在分頁中點了主頁其他的
Android圖片壓縮,自己編譯libjpeg
之前的部落格提到過關於圖片壓縮的方法: Android 圖片壓縮,Bitmap優化 基於此so庫寫的一個圖片壓縮框架:https://github.com/JavaNoober/Light Android原生的壓縮方法,不在乎兩種:通過設定simpleSize根據圖片尺寸壓縮
C++ 多繼承中重寫 不同基類中相同原型的虛擬函式
本篇隨筆為轉載,原文地址: C++多繼承中重寫不同基類中相同原型的虛擬函式。 在C++多繼承體系當中,在派生類中可以重寫不同基類中的虛擬函式。下面就是一個例子: class CBaseA { public:
繼承、重寫方法-電子寵物系統
1 package com.szxs.pet; 2 /** 3 * 父類 :寵物類 4 * @author 5 * 6 */ 7 public class Pet { 8 private String name; // 寵物名字 9 private int h
private方法不能繼承,重寫
public class Father { private void f1(){ System.out.println("Father f1()"); } void f2() { System.out.println("Father
(D19)Python-封裝、多型、多繼承、重寫
封裝 enclosure 封裝是指隱藏類的實現細節,讓使用者不用關心這些細節 封裝的目的是讓使用者通過儘可能少的方法(或屬性)操作物件 私有屬性和方法: python類中以雙下劃線(’__’)開頭,不以雙下劃線結尾的識別符號為私有成員,