一:分别继承于Activity,ListActivity,ListView使用
Java代码
public class ListView_ArrayAdapterActivity extends Activity {
}
下面这个程序是简单的使用ArrayAdapter来进行ListView和ArrayList的绑定
public class TodoListActivity extends Activity {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==KeyEvent.ACTION_DOWN)
if(keyCode==KeyEvent.KEYCODE_DPAD_CENTER)
{
todoItems.add(0,myEditView.getText().toString());
aa.notifyDataSetChanged();
myEditView.setText("");
return true;
}
return false;
}
});
}
自己定制ToDoItem来的代替String的程序如下:
默认情况下,ArrayAdapter把每个对象(如下面的
ToDoItem)的toString值绑定到一个ListView的一项(它的每一项都是一个TextView)中。
public class TodoListActivity extends Activity {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==KeyEvent.ACTION_DOWN)
if(keyCode==KeyEvent.KEYCODE_DPAD_CENTER)
{
todoItems.add(0,new ToDoItem(myEditView.getText().toString()));
aa.notifyDataSetChanged();
myEditView.setText("");
return true;
}
return false;
}
});
}
package cn.todolist.rxm;
import java.text.SimpleDateFormat;
import java.util.Date;
public class
ToDoItem {
String task;
Date created;
public String getTask()
{
return task;
}
public Date getCreated()
{
return created;
}
public ToDoItem(String _task)
{
this(_task,new Date(java.lang.System.currentTimeMillis()));
}
public ToDoItem(String _task, Date _created) {
// TODO Auto-generated constructor stub
task=_task;
created=_created;
}
public String toString()
{
SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yy");
String dateString=sdf.format(created);
return "("+dateString+")"+task;
}
}
Java代码
public class ListView_ArrayAdapterActivity extends ListActivity {
}
对比很容易发现,前者(extends Activity)需要在xml布局中找到ListView控件,后者则不需要,但是后者xml布局中ListView标签id固定.最后关于布局文件,前者(extends Activity)xml布局中,ListView标签id可以任意取值,而后者(extends ListActivity)ListView标签中id写法固定android:id="@+id/android:list"二:以ArrayAdapter为例,自定义ListItem样式系统样式:android.R.layout.simple_expandable_list_item_1
Java代码
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,getListData());
自定义样式R.layout.my_simple_list_item_1
Java代码
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.my_simple_list_item_1,getListData());
my_simple_list_item_1.xml:
Java代码
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
/>
请留意这种布局,根布局为控件TextView.三:自定义ArrayAdapterListView_ArrayAdapterActivity .java
Java代码
public class ListView_ArrayAdapterActivity extends Activity {
}
IconListItem.java
Java代码
public class IconListItem {
}
main.xml
Java代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<ListView
</LinearLayout>
custom_layout1.xml
Java代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
<TextView
/>
<ImageView
/>
</RelativeLayout>
引用
给大家列出本类所有成员方法实用的处理方式:void
add(T object)
//添加一个对象到本ArrayAdaptervoid
clear()
//清除所有元素static ArrayAdapter<CharSequence>
createFromResource(Context context, int textArrayResId, int textViewResId)
//从layout资源构造arrayadapterContext
getContext()
//获取实例int
getCount()View
getDropDownView(int position, View convertView, ViewGroup parent)
//获取drop down的popup风格选择条目的内容,参数1是位置,参数2可以通过强制转换直接获取本条的内容Filter
getFilter() //使用正则过滤数据T
getItem(int position)
//获取单条内容long
getItemId(int position) int
getPosition(T item) //通过内容获取是某条View
getView(int position, View convertView, ViewGroup parent)void
insert(T object, int index)
//插入新条目到数组的index位置void
notifyDataSetChanged()
//通知数据变化了,告诉绑定Adapter的widget来更新UIvoid
remove(T object)
//移出一条从数组,这里并没有指定位置void
setDropDownViewResource(int resource)
//设置dropdown的layout风格Sets the layout resource to create the drop down views.void
setNotifyOnChange(boolean notifyOnChange)
//本条是arrayadapter最强大的功能,android123强烈推荐处理大数据时使用该方法,可以降低ui的处理量,刷新ui可以更快速,主要可以停止对(add(T), insert(T, int), remove(T), clear() 的操作,当然可以通过 notifyDataSetChanged(). 或 setNotifyOnChange(true) 通知变化void
sort(Comparator<? super T> comparator)
//这里是android开发网经常用的排序,使用arrayadapter可以直接排序,十分方便推荐大家什么情况使用arrayadapter,什么时候使用baseadapter。当数量较多,比如超过100条或频繁动态增减时使用arrayadapter可以方便控制ui,通过setNotifyOnChanage方法,如果比较简单仅仅呈现直接从 baseadapter更节省资源。