总体概述:在ListActivity中有预置的布局(simple_list_item_1)作为模板。但有时根据内容需要自定义列表显示,分五步:一、创建列表条目布局和业务类;二、创建列表数据适配器类;三、在MainActivity中创造一个适配器类对象并绑定到当前ListAcitivity中;四、创建示例数据类;五、在当前MainActivity中加载示例数据。
一、创建列表条目布局和业务类
根据业务内容需要创建。
二、创建列表数据适配器类
public class TestListAdapter extends ArrayAdapter {
private ArrayList items;
private Context ctx;
public TestListAdapter(Context context, int textViewResourceId, ArrayList items) {
super(context,textViewResourceId,items);
this.items=items;
ctx=context;
}
@Override
public View getView(int position,View convertView,ViewGroup parent){
View v=convertView;
if(v==null){
LayoutInflater vi=(LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v=vi.inflate(R.layout.test_row, null);
}
TestContent testContent=items.get(position);
if(testContent!=null){
CheckBox cbox=(CheckBox)v.findViewById(R.id.checkBox);
Button but=(Button)v.findViewById(R.id.mainbutton);
if(cbox!=null)cbox.setText(testContent.getName());
}
return v;
}
public void setList(ArrayListt_list){
this.clear();
if(t_list!=null&&t_list.size()>0){
for(int i=0;i
this.add(t_list.get(i));
this.notifyDataSetChanged();
}
}
}
三、在MainActivity中创造一个适配器类对象并绑定到当前ListAcitivity中
private TestListAdapter t_adapter = new TestListAdapter(this, R.layout.test_row,new ArrayList() );
setListAdapter(t_adapter);
listData();
四、创建示例数据类
public class TestSample {
private static long idfrom=0;
public static ArrayList getData(){
ArrayListt_list=new ArrayList();
TestContent testContent=null;
for(int i=0;i<5;i++){
idfrom++;
testContent=new TestContent("测试"+idfrom);
t_list.add(testContent);
}
return t_list;
}
}
五、在当前MainActivity中加载示例数据
private void listData(){
ArrayListt_list=TestSample.getData();
t_adapter.setList(t_list);
}
进一步了解:查看android API
java.lang.Object
android.widget.BaseAdapter
android.widget.ArrayAdapter<T>