android第十六步采用ListView实现数据列表显示

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;
    }

 



posted @ 2014-03-20 14:02  东方小花猪  阅读(1218)  评论(0编辑  收藏  举报