ListView列表的用法

来源:互联网 发布:centos twisted 编辑:程序博客网 时间:2024/05/27 16:41
1、MainActivity.java:
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 对象裡的内容呈现于屏幕画面上

	
				
		
原创粉丝点击