Android之ListView,ArrayAdpater绑定ArrayList

在Anroid开发中经常会用到ListView控件来绑定要显示的数据,那么如何绑定数据,我们可以通过ArrayList和ArrayAdapter来绑定数据
1.首先定义main.xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation
="vertical"
android:layout_width
="fill_parent"
android:layout_height
="fill_parent"
>
<EditText
android:id="@+id/edit"
android:layout_width
="fill_parent"
android:layout_height
="wrap_content"
/>
<ListView
android:id="@+id/list"
android:layout_width
="fill_parent"
android:layout_height
="wrap_content"
></ListView>
</LinearLayout>

  

布局中定义了一个EditText控件(用来增加ListView项目)和ListView控件(用来显示增加的每一项)
布局显示如下:



2.在主活动中,通过findViewById()函数得到main.xml布局中的两个上面定义的控件的引用
ListView mylListView = (ListView)findViewById(R.id.list);
final EditText myeEditText = (EditText)findViewById(R.id.edit);

  

3.创建ArrayList和ArrayAdapter用来把要显示的数据项绑定到ListView中
final ArrayList<String> todoItems = new ArrayList<String>();
final ArrayAdapter<String> aa;
//把ArrayList绑定到ArrayAdapter,ArrayList中的数据改变时,通过ArrayAdapter适配器就能更新界面的数据
aa = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,todoItems);

  

4.把ArrayAdapter绑定到ListView上
mylListView.setAdapter(aa);

  

5.为EditText控件添加监听事件,当android手机的上下左右键的中间确定键按下时,ListView中增加一项并通过ArrayAdapter的notifyDataSetChanged()函数更新。
 myeEditText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
//当事件为按下动作时
if(event.getAction() == KeyEvent.ACTION_DOWN)
//当按键为android键盘中的中间键(android手机上下左右键的中间确定键)
if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
{
//为ArrayList添加一项,一项的内容为EditText(文本编辑框中的内容)
todoItems.add(0,myeEditText.getText().toString());
//更新显示内容
aa.notifyDataSetChanged();
//更新以后清空文本编辑框中的内容
myeEditText.setText("");
return true;
}
return false;
}
});

  

当点击手机的中间键时,ListView增加一项并显示到界面中,如下:



完整代码如下:
package com.Demo;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

public class ToDoItem extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//获取对xml布局中的控件
ListView mylListView = (ListView)findViewById(R.id.list);
final EditText myeEditText = (EditText)findViewById(R.id.edit);

//创建ArrayList,
final ArrayList<String> todoItems = new ArrayList<String>();

//创建ArrayAdapter
final ArrayAdapter<String> aa;
aa
= new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,todoItems);

//为xml布局中的ListView绑定适配器
mylListView.setAdapter(aa);

//为xml布局中的EditText控件添加键盘点击事件
myeEditText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
//当事件为按下动作时
if(event.getAction() == KeyEvent.ACTION_DOWN)
//当按键为android键盘中的中间键(android手机上下左右键的中间确定键)
if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
{
//为ArrayList添加一项,一项的内容为EditText(文本编辑框中的内容)
todoItems.add(0,myeEditText.getText().toString());
//更新显示内容
aa.notifyDataSetChanged();
//更新以后清空文本编辑框中的内容
myeEditText.setText("");
return true;
}
return false;
}
});
}
}

  

posted on 2011-07-30 21:41  cyh3101  阅读(2473)  评论(0编辑  收藏  举报

导航