无论是android还是IOS、listview(android)(UITableview)都是移动开发UI中最重要和最难的控键。注意没有之一,因此这个控键的重要成都可见一般。
讲解Listview从MVC的概念来理解非常的易懂。
V:view
ListView mListView = (ListView) findViewById(R.id.listview);
比如我们在界面布局的xml文件中定义了一个控键,这个控键就是我们要显示的listview。M:model
数据模型:比如这里创建一个list或者创建一个其他的数据对象。
C:controller
视图控制器,用于在M和V之间建立联系,即怎样将M绑定到V上。
这里提供了一个类叫:Adapter
mListView.setAdapter(new MyAdapter());
创建一个子类继承这个Adapter
class MyAdapter extends BaseAdapter
public int getCount() {
return personList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
这里有一些常见的方法,比较简单这里就不一一描述了。重点看看绑定的方法:
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = null;
if(convertView != null) {
tv = (TextView) convertView;
} else {
tv = new TextView(MainActivity.this);
}
tv.setTextSize(12);
Person person = personList.get(position);
tv.setText(person.toString());
return tv;
}
}
position 表示列表中每一个listview的子控键的位置,convertView表示缓存,是否使用,这个缓存的功能和IOS中UITableview一样就不详述了。这个方法实现了获取view,绑定数据的功能,最后吧生成的一个view对象返回到listview的一个子视图上。
加载XML:
这里是吧xml作为一个子的view加载到list view中:
if(convertView == null) {
// 把xml布局转换成view对象
LayoutInflater inflater = MyActivity.this.getLayoutInflater();
view = inflater.inflate(R.layout.listview_item, null);
} else {
view = convertView;
}
利用打气筒将xml加载进来,然后将其转化为view,之后从view中获取子的id对象。并对其子对象进行数据装载操作。