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控件(用来显示增加的每一项)
布局显示如下:
Android之ListView,ArrayAdpater绑定ArrayList_第1张图片

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;
}
});
            
       }
}

你可能感兴趣的:(android,ListView,layout,手机,文本编辑,encoding)