ListView列表的用法
来源:互联网 发布:centos twisted 编辑:程序博客网 时间:2024/05/27 16:41
public class MainActivity extends Activity implements OnItemClickListener {public static final int RELOAD_ID = Menu.FIRST;public static final int EXIT_ID = Menu.FIRST + 1;ListView lv;ArrayAdapter<String> adapter;DataModel dm;@Overridepublic void onCreate(Bundle bundle) {super.onCreate(bundle);dm = new DataModel();lv = new ListView(this);adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, dm.loadData());lv.setAdapter(adapter);lv.setOnItemClickListener(this);setContentView(lv);}public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {setTitle("choice: " + String.valueOf(dm.getPrice(arg2)));}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);menu.add(0, RELOAD_ID, 0, "Reload");MenuItem im = menu.findItem(RELOAD_ID);im.setIcon(R.drawable.icon);menu.add(0, EXIT_ID, 1, "Exit");im = menu.findItem(EXIT_ID);im.setIcon(R.drawable.icon);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case RELOAD_ID:adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, dm.loadData());lv.setAdapter(adapter);break;case EXIT_ID:finish();break;}return super.onOptionsItemSelected(item);}}
2、DataModel.java代码:
public class DataModel {private String[] data, xdata;private double[] price;private boolean k = true;public DataModel() {data = new String[3];data[0] = "Item-1";data[1] = "Item-2";data[2] = "Item-3";xdata = new String[3];xdata[0] = "Prod-x";xdata[1] = "Prod-y";xdata[2] = "Prod-z";price = new double[3];price[0] = 305.5;price[1] = 56.75;price[2] = 100.25;}public String[] loadData() {k = !k;if (k)return xdata;elsereturn data;}public double getPrice(int i) {return price[i];}}
详解:
1.此程序展现MVC(model-view-controller)的基本架构。
2. MainActivity是Activity 的子类,它扮演controller 的角色。
3. ListView 是View 的子类,它扮演view 的角色。
4. 但是欠缺一个model 角色,怎么办呢?
5. 于是,撰写一个DataModel 类,并使用语句:dm = new DataModel();來诞生一个DataModel 的物件。
6. 然后,语句:adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dm.loadData());这诞生一个ArrayAdapter 的对象,并呼叫dm.loadData()函数取得选单所需要的内容,存入此新对象(即adapter)里。
7. 语句: lv.setAdapter(adapter);其lv 对象就向adapter 对象取得选单内容。
8. 语句:lv.setOnItemClickListener(this);这设定ListView 选单事件的处理程序,又称为事件监听者。当使用者选取一个项目时,框架必须把事件准确地传递到适当的类,并呼叫
所指定的函数。其中的参数:this 就表示此按钮事件必须传递到MainActivity类的对象,至于由MainActivity类的哪一个函数來处理呢? 就是由OnItemClickListener 界面所规定的onItemClick ()函数來处理之。
9. 语句:setContentView(lv);将lv 对象裡的内容呈现于屏幕画面上
- ListView列表的用法
- 列表(ListView)控件和适配器的用法
- ListView的列表显示
- Android列表用法之一:实战简单ListView
- Android列表用法之二:实战ListView高级用法
- 列表视图ListView的使用
- ListView +Girdview 的一个列表
- 列表ListView控件的使用
- ListView列表控件的使用
- 带子列表的listview:FloatingGroupExpandableListView
- 一个listview列表的展示
- ListView的用法(一)
- listview的用法
- listview的用法
- Delphi ListView的用法
- ListView的用法详解
- listview的简单用法
- listView的简单用法
- linux程序编译
- POJ 3604 Professor Ben
- 苹果悄悄对iOS5做了一个重大改动:将逐渐禁止开发者访问UDID
- 大学助理工作总结
- 【error LNK2001】: 无法解析的外部符号 _IID_IDirectDraw7
- ListView列表的用法
- poj 1952 BUY LOW, BUY LOWER dp 但去重真是令人纠结啊!!!
- MySQL的AUTO_INCREMENT
- Jquery批量判断是否为空,是否为数字
- 各大银行的软件开发中心
- 命令行运行带有package包路径的java程序
- 网页中如何设置在网页地址栏中的小图标(收藏)
- MYSQL 判断函数
- Linux里的防火墙:netfilter简介与Iptables的使用(上)