總體概述:在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>