ListView绑定数据需要通过Adapter来绑定 listView.setAdapter(adapter);
Adapter分为三种
SimpleAdapter
参数:上下文对象、要绑定的数据、Item对象、字段名称、Item对象中对应的控件ID
SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,
new String[]{"name","phone","amount"},
new int[]{R.id.name,R.id.phone,R.id.amount});
SimpleCursorAdapter:注意使用这个适配器游标对象中必须有一个字段为_id
参数:上下文对象、Item对象、游标对象、字段名称、Item对象中对应的控件ID
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.item,cursor,
new String[]{"name","phone","amount"},
new int[]{R.id.name,R.id.phone,R.id.amount});
自定义游标:必须继承BaseAdapter
LayoutInflater动态载入res/layout/下的xml布局文件,并且实例化与findViewById()类似不过它是用来找xml布局文件下的具体widget控件(如Button、TextView等)
WINDOW_SERVICEWindowManager管理打开的窗口程序
LAYOUT_INFLATER_SERVICELayoutInflater取得xml里定义的view
ACTIVITY_SERVICEActivityManager管理应用程序的系统状态
POWER_SERVICEPowerManger电源的服务
ALARM_SERVICEAlarmManager闹钟的服务
NOTIFICATION_SERVICENotificationManager状态栏的服务
KEYGUARD_SERVICEKeyguardManager键盘锁的服务
LOCATION_SERVICELocationManager位置的服务,如GPS
SEARCH_SERVICESearchManager搜索的服务
VEBRATOR_SERVICEVebrator手机震动的服务
CONNECTIVITY_SERVICEConnectivity网络连接的服务
WIFI_SERVICEWifiManagerWi-Fi服务
TELEPHONY_SERVICETeleponyManager电话服务
public class PersonAdapter extends BaseAdapter {
private List<Person> persons;
private int elment;
private LayoutInflater inflater;
public PersonAdapter(Context context,List<Person> persons, int elment) {
this.persons = persons;
this.elment = elment;
inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
}
//条目
@Override
public int getCount() {
// TODO Auto-generated method stub
return persons.size();
}
//根据位置返回数据
@Override
public Object getItem(int arg0) {
return persons.get(arg0);
}
//返回选中ID
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
TextView txtname;
TextView txtphone;
TextView txtamount;
if(arg1 == null){
arg1 = inflater.inflate(elment, null);
ViewCache cache = new ViewCache();
txtname = (TextView)arg1.findViewById(R.id.name);
txtphone = (TextView)arg1.findViewById(R.id.phone);
txtamount = (TextView)arg1.findViewById(R.id.amount);
cache.txtname =txtname;
cache.txtphone = txtphone;
cache.txtamount = txtamount;
arg1.setTag(cache); //放入缓存对象到TAG属性
}
else
{
ViewCache cache = (ViewCache)arg1.getTag();
txtname = cache.txtname;
txtphone = cache.txtphone;
txtamount = cache.txtamount;
}
Person person = persons.get(arg0);
txtname.setText(person.getName());
txtphone.setText(person.getPhone());
txtamount.setText(String.valueOf(person.getAmount()));
return arg1;
}
//不是GET SET方法是因为会增加文件体积,会消耗更多内存
private final class ViewCache{
public TextView txtname;
public TextView txtphone;
public TextView txtamount;
}