适配器Adapter
2015-10-10 14:02
288 查看
Adapter:用来填充数据的中间桥梁,-----ListView / GridView / Spinner / ViewPager/AutoCompleteTextView/(有子列表的都可以设置)
PagerAdapter : ViewPage
new Adapter(Context context,int item_layout,dataBase);
ArrayAdapter -----适用于数据源单一的数组,String[] / int [] /....
SimpleAdapter----适用于数据源相对较少的集合, List<HashMap<key,value>>
SimpleAdapter adapter = new SimpleAdapter(context, data, resource, from, to);//data:list<map>数据源,int resource,布局资源 (可是自定义)String[] from -data-map里标的签,int[] to,相应的控件id
自定义适配器
extends BaseAdapter ------数据源为自定义对象的数据源时,需要自定义一个适配器继承于他
要重写以下四个方法
public int getCount() {}
public Object getItem(int position) {}
public long getItemId(int position) {}
public View getView(int position, View convertView, ViewGroup parent) {}
PagerAdapter : ViewPage
new Adapter(Context context,int item_layout,dataBase);
ArrayAdapter -----适用于数据源单一的数组,String[] / int [] /....
SimpleAdapter----适用于数据源相对较少的集合, List<HashMap<key,value>>
SimpleAdapter adapter = new SimpleAdapter(context, data, resource, from, to);//data:list<map>数据源,int resource,布局资源 (可是自定义)String[] from -data-map里标的签,int[] to,相应的控件id
自定义适配器
extends BaseAdapter ------数据源为自定义对象的数据源时,需要自定义一个适配器继承于他
要重写以下四个方法
public int getCount() {}
public Object getItem(int position) {}
public long getItemId(int position) {}
public View getView(int position, View convertView, ViewGroup parent) {}
package com.scxh.android.listview; import java.util.ArrayList; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.scxh.android.frame.R; public class MyBaseAdapter extends BaseAdapter { private ArrayList<User> list = new ArrayList<User>();// 初始化目的避免网络延迟造成的空指针 private LayoutInflater inflater; public MyBaseAdapter(Context context) { inflater = LayoutInflater.from(context); } public void setData(ArrayList<User> list) {// 设置数据源 this.list = list; notifyDataSetChanged();// 数据更新 } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ItemWidget widget;// 内部类,里面是自定义布局的控件 if (convertView == null) {// 一优化,避免重复加载,浪费资源 convertView = inflater.inflate(R.layout.mybaseadapter_item_layout, null); widget = new ItemWidget(); widget.icon = (ImageView) convertView .findViewById(R.id.mybaseadapter_item_img); widget.title = (TextView) convertView .findViewById(R.id.mybaseadapter_item_title); widget.content = (TextView) convertView .findViewById(R.id.mybaseadapter_item_content); convertView.setTag(widget); } else { widget = (ItemWidget) convertView.getTag(); } //将User里的值取出来 User user = (User) getItem(position); int id = user.getmId(); String userName = user.getmUserName(); String introduce = user.getmIntroduce(); //赋给控件 widget.icon.setImageResource(id); widget.title.setText(userName); widget.content.setText(introduce); return convertView; } public class ItemWidget { ImageView icon; TextView title; TextView content; } }
相关文章推荐
- Ubuntu挂载U盘
- 【小米校招笔试】给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次
- SQL注入——如何攻击(一)
- JS正则表达式验证账号、手机号、电话和邮箱
- Hadoop获得先进的步步高(四)-试Hadoop
- linux安装yaf(ubuntu教程)
- cydia substrate android permission denied Script Failure
- Datamining
- javascript 返回上一页面:onclick="javascript:history.back(-1);"
- 如何修改mysql字符编码
- max min
- android ndk Toolchain
- iOS开发系列--通知与消息机制
- Mockito--实例篇
- 解决hadoop namenode 无法启动
- SQL注入——如何防御(三)
- iGrimaceV8 V8在线威锋源apt.so/qwkjv8手机直接下载安装教程
- [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则
- 制作banner切换效果
- PASSION之Logback(1)