从应用框架AF角度看ListView和Adapter by 高焕堂
2011-10-07 19:41
197 查看
在Android应用框架(Application Framework, 简称AF)里已经设计了许多类别,其中的
三个类别如下:
这用来协助Activity在UI画面上显示一个List窗口,例如:
请 你注意AF的特性:Activity、ListView和BaseAdapter两个类别已经由AndroidAF开发者设计在先。只是当时Android AF开发者并不知道应用程序(Applications,简称AP)里的List窗口的内容,所以预留了空间给AP程序员去补充,如下:
AF设计师与AP程序员两者在不同的时间及空间(即地点)合作。AF设计师在设计AF当时并不知道AP的List窗口里各选项的长相(文字或是图像等),因为这长相的决定是来自于AP的用户。所以只有AP程序员知道,AF设计师并不知道。于是,AF设计师负责撰写AF里的Super-class(如BaseAdapter)而AP程序员负责撰写AP里的Subclass(如myStringAdapter)。两者跨时间和空间的智能会合而成为一支完整好用的应用程序。例如,AP程序员知道他的UI将显示出单纯的文字型List窗口,所以就撰写myStringAdapter子类别。
当应用程序执行时,AF掌握整个控制权,呼叫ac01的onCreate()函数,询问AP程序员的见解:
在ac01的onCreate()函数里,AP程序员回答:由myStringAdapter子类别来提供内容及长相给ListView。于是,Activity要求显示ListView的内容时,ListView就从BaseAdapter而反向呼叫到myStringAdapter的getView()等函数,而取得显示的内容和长相了。
于此,请看一个简单的Android程序代码,来体会上述智慧会合的实现。此程序的画面显示一个单纯的文字List窗口:
其程序代码如下:
其于,这样的基本结构,就能进一步发展出各式各样的Adapter了。例如ArrayAdapter、SimpleAdapter等等。
三个类别如下:
这用来协助Activity在UI画面上显示一个List窗口,例如:
请 你注意AF的特性:Activity、ListView和BaseAdapter两个类别已经由AndroidAF开发者设计在先。只是当时Android AF开发者并不知道应用程序(Applications,简称AP)里的List窗口的内容,所以预留了空间给AP程序员去补充,如下:
AF设计师与AP程序员两者在不同的时间及空间(即地点)合作。AF设计师在设计AF当时并不知道AP的List窗口里各选项的长相(文字或是图像等),因为这长相的决定是来自于AP的用户。所以只有AP程序员知道,AF设计师并不知道。于是,AF设计师负责撰写AF里的Super-class(如BaseAdapter)而AP程序员负责撰写AP里的Subclass(如myStringAdapter)。两者跨时间和空间的智能会合而成为一支完整好用的应用程序。例如,AP程序员知道他的UI将显示出单纯的文字型List窗口,所以就撰写myStringAdapter子类别。
当应用程序执行时,AF掌握整个控制权,呼叫ac01的onCreate()函数,询问AP程序员的见解:
在ac01的onCreate()函数里,AP程序员回答:由myStringAdapter子类别来提供内容及长相给ListView。于是,Activity要求显示ListView的内容时,ListView就从BaseAdapter而反向呼叫到myStringAdapter的getView()等函数,而取得显示的内容和长相了。
于此,请看一个简单的Android程序代码,来体会上述智慧会合的实现。此程序的画面显示一个单纯的文字List窗口:
其程序代码如下:
package xom.misoo.pkzz; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; public class ac01 extends Activity implements OnItemClickListener { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); ListView lv = new ListView(this); lv.setAdapter(new myAdapter(this)); lv.setOnItemClickListener(this); setContentView(lv); } public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if(arg2 == 0) setTitle(((TextView)arg1).getText()); else if(arg2 == 1) finish(); } } package xom.misoo.pkzz; import java.util.ArrayList; import android.content.Context; import android.graphics.Color; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class myAdapter extends BaseAdapter { private Context ctx; private ArrayList<String> coll; public myAdapter(Context context) { ctx = context; coll = new ArrayList<String>(); coll.add("Hello!!"); coll.add("Exit"); } public int getCount() { return coll.size(); } public Object getItem(int position) { return coll.get(position); } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { TextView tv; if (convertView == null) tv = new TextView(ctx); else tv = (TextView)convertView; tv.setTextColor(Color.CYAN); tv.setHeight(45); tv.setTextSize(26); tv.setText(coll.get(position)); return tv; } }
其于,这样的基本结构,就能进一步发展出各式各样的Adapter了。例如ArrayAdapter、SimpleAdapter等等。
相关文章推荐
- 从应用框架角度看ListView与Adapter类别
- SharePoint 201 ListViewByQuery Control 应用
- Android成长之路(8)——ListView优化和自定义Adapter的应用
- Listview与adapter的关系及应用(超详细)
- 2015年3月26日 - Javascript MVC 框架DerbyJS DerbyJS 是一个 MVC 框架,帮助编写实时,交互的应用。
- Java泛型应用之打造Android中ListView和GridView万能适配器【CommonAdapter】--超简洁写法
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
- 读书笔记之高焕堂《Android 应用框架原理与程式设计36技》
- Android中BaseAdapter在ListView中的应用与优化
- Listview与Adapter的关联应用
- 读高焕堂的 android 应用框架原理与程序设计 36技
- Listview 应用详解--应用适配器arrayadapter
- Android ListView框架搭建:抽取Adapter共性的方法与属性进行封装
- android ListView 和 BaseAdapter 应用
- Android中的Adapter如何应用到listView中的
- 从应用角度看Android源码 - 神奇的Adapter
- 分享第一本中文Android书籍(应用框架和程序设计--高焕堂)
- 应用框架(AF)及OSAL处理来自AF的数据包流程
- Android采用ListView实现列表数据的显示--Adapter应用
- listview简单应用之ArrayAdapter(一)