list展现数据有多种方式,但是基本模式都差不多,如下:
(1)在布局文件中加入:ListView控件
(2)获得ListView控件
(3)准备数据
(4)数据填充到adapter
(5)将adapter捆绑到ListView上
根据数据的获得方式和复杂度选择不同的list adapter填充方式。
1.简单的adapter填充,只需要根据adatper的参数配置上去就OK。
2.BaseAdapter可以定制各种复杂的list内容
3.CusorAdapter比较实用于数据库实时更新同步的情况。
package listview;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.studymar.radiocheckbox.R;
import com.studymar.radiocheckbox.R.id;
import com.studymar.radiocheckbox.R.layout;
import android.R.anim;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.widget.CursorAdapter;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class TestListView extends Activity {
//1.声明控件
ListView myListView=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.testlistview);
Log.i("123", "TestListView oncreate");
//2.初始化控件
myListView=(ListView)findViewById(R.id.mylist);
//3.填充list,根据不同的值用不同的方式填充
fillList(1);
//4.设置list监听
myListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Log.i("123", "arg1.getid()="+arg1.getId()+",arg2="+arg2+",arg3="+arg3);
Log.i("123","view.getid()="+arg0.getAdapter().getItemId(arg2));
}
});
}
private void fillList(int n) {
if(n==0)
SimpleAdapterfill();
else if(n==1)
BaseAdapterfill();
else if(n==2)
CursorAdapterfill();
else {
}
}
private void CursorAdapterfill() {
// TODO Auto-generated method stub
}
private void BaseAdapterfill() {
ArrayList<String> name=new ArrayList<String>();
name.add("zhangsan");
name.add("lisi");
name.add("wangwu");
name.add("maliu");
name.add("luqi");
name.add("caiba");
myListView.setAdapter(new MyAdapter(name,this));
}
private void SimpleAdapterfill() {
ArrayList<HashMap<String,String>> dataList=new ArrayList<HashMap<String,String>>();
HashMap<String, String> map1=new HashMap<String, String>();
HashMap<String, String> map2=new HashMap<String, String>();
HashMap<String, String> map3=new HashMap<String, String>();
map1.put("name", "zhangsan");
map1.put("id", "1");
map2.put("name", "lisi");
map2.put("id", "2");
map3.put("name", "wangwu");
map3.put("id", "3");
dataList.add(map1);
dataList.add(map2);
dataList.add(map3);
myListView.setAdapter(new SimpleAdapter(TestListView.this, dataList, R.layout.listxml,new String[]{"name","id"}, new int[]{R.id.t1,R.id.t2}));
}
}
package listview;
import java.util.ArrayList;
import org.w3c.dom.NameList;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.TextView;
public class MyAdapter extends BaseAdapter{
ArrayList<String> nameArrayList=null;
Context ccContext=null;
public MyAdapter(ArrayList<String> name,Context ccContext){
this.nameArrayList=name;
this.ccContext=ccContext;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return nameArrayList.size();
}
@Override
public Object getItem(int position) {
return nameArrayList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tempTextView=new TextView(ccContext);
if(convertView==null){
tempTextView.setText(nameArrayList.get(position));
return tempTextView;
}
return (TextView)convertView;
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/mylist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/t1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<TextView
android:id="@+id/t2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
</LinearLayout>