类ListView与BaseAdapter(BaseAdapter的工作流程)
2015-07-03 23:33
337 查看
在我们需要定制自己的适配器时(adapter)时我们就需要继承BaseAdapter抽象类,除了必要的构造函数外有几个函数是必须要重载的,它们是:
public abstract int getCount()
该方法的返回值控制该Adapter将会包含多少个列表项
public abstract Object getItem(int position)
该方法的返回值决定第position处的列表项的内容
public abstract long getItemId(int position)
该方法的返回值决定第position处的列表项的ID
public abstract View getView(int position, View convertView, ViewGroup parent)
该方法的返回值决定第position处的列表项的布局。由返回值类型为view可知,要在getView()方法中设计好列表项的布局,并对需要填充数据的组件调用setText()等方法填充,最后返回列表项的布局对象。
由该流程图可知,每个position出的列表项的布局都是一样的
例子中R.layout.item是列表项的布局文件
convertView可用这个方法赋值为每个列表项的布局对象,故convertView可作为返回值
holder = new ViewHolder();//convertView下的三个控件ItemTitle、ItemText、ItemButton交由 holder管理,
//即holder对象hold着这三个控件
/*得到各个控件的对象*/
holder.title = (TextView) convertView.findViewById(R.id.ItemTitle);
holder.text = (TextView) convertView.findViewById(R.id.ItemText);
holder.bt = (Button) convertView.findViewById(R.id.ItemButton);
convertView.setTag(holder);//绑定ViewHolder对象
和
可知 ViewHolder对象只是协助管理convertview下的控件
public abstract int getCount()
该方法的返回值控制该Adapter将会包含多少个列表项
public abstract Object getItem(int position)
该方法的返回值决定第position处的列表项的内容
public abstract long getItemId(int position)
该方法的返回值决定第position处的列表项的ID
public abstract View getView(int position, View convertView, ViewGroup parent)
该方法的返回值决定第position处的列表项的布局。由返回值类型为view可知,要在getView()方法中设计好列表项的布局,并对需要填充数据的组件调用setText()等方法填充,最后返回列表项的布局对象。
由该流程图可知,每个position出的列表项的布局都是一样的
例子中R.layout.item是列表项的布局文件
convertView可用这个方法赋值为每个列表项的布局对象,故convertView可作为返回值
holder = new ViewHolder();//convertView下的三个控件ItemTitle、ItemText、ItemButton交由 holder管理,
//即holder对象hold着这三个控件
/*得到各个控件的对象*/
holder.title = (TextView) convertView.findViewById(R.id.ItemTitle);
holder.text = (TextView) convertView.findViewById(R.id.ItemText);
holder.bt = (Button) convertView.findViewById(R.id.ItemButton);
convertView.setTag(holder);//绑定ViewHolder对象
和
可知 ViewHolder对象只是协助管理convertview下的控件