mInflater = LayoutInflater.from(context);
mResource = mDropDownResource = resource;
mObjects = objects;
mObjectsFromResources = objsFromResources;
mFieldId = textViewResourceId;
}
}
一般来讲使用BaseAdapte 都要自定义Adapate,因为该类的使用,需要实现把数据源确定,这样才能在匹配数据时,按照类的方式直接使用
事例一
2.BaseAdapter类 原型
public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter
实例二(该类原型继承类)
该类没有原初始化函数 所以 一定要重载
public class MyAdapter extends BaseAdapter{
private List mList;//数据源
private LayoutInflater mInflater;//布局装载器对象
// 通过构造方法将数据源与数据适配器关联起来
// context:要使用当前的Adapter的界面对象
public MyAdapter(Context context, List list) {
mList = list;
mInflater = LayoutInflater.from(context);
}
@Override
//ListView需要显示的数据数量
public int getCount() {
return mList.size();
}
@Override
//指定的索引对应的数据项
public Object getItem(int position) {
return mList.get(position);
}
@Override
//指定的索引对应的数据项ID
public long getItemId(int position) {
return position;
}
@Override
//返回每一项的显示内容
public View getView(int position, View convertView, ViewGroup parent) {
//将布局文件转化为View对象
View view = mInflater.inflate(R.layout.item,null);
/**
- 找到item布局文件中对应的控件
*/
TextView titleTextView = (TextView) view.findViewById(R.id.tv_title);
TextView contentTextView = (TextView) view.findViewById(R.id.tv_content);
//获取相应索引的ItemBean对象
ItemBean bean = mList.get(position);
/**
- 设置控件的对应属性值
*/
titleTextView.setText(bean.itemTitle);
contentTextView.setText(bean.itemContent);
return view;
}
}
事例三 SimpleAdapter原初始化类
public SimpleAdapter(Context context, List<? extends Map
@LayoutRes int resource, String[] from, @IdRes int[] to) {
mData = data;
mResource = mDropDownResource = resource;
mFrom = from;
mTo = to;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
实列三 利用数据库直接获取数据源,因为SimpleAdapter原型 类似与BaseAdapter)
Cursor name=dataOperation.getAll();
while(name.moveToNext()){
Map<String, Object> items = new HashMap<String, Object>();
String notename1=name.getString(0);
notetitle.add(notename1);
String notetime1=name.getString(2);
items.put(“notename1”, notename1); //放入头像, 根据下标获取数组
items.put(“notetime1”, notetime1); //放入名字, 根据下标获取数组
list_map.add(items);
}
simpleAdapter = new SimpleAdapter(
MainActivity.this,
list_map,
R.layout.listnote_item,
new String[]{“notename1”, “notetime1”},
new int[]{R.id.notename, R.id.notetime});
listView.setAdapter(simpleAdapter);
它们两都是Android里的适配器,充当数据和界面之间的桥梁,用SimpleAdapter、baseAdapter的实现效果都几乎是一样,SimpleAdapter适配器使用的数据结构是HashMap,这意味着,如果需要操作的数据对象结构过于复杂时,需要写大量的相关转化代码,程序的效率和可维护性都会变的很低,但是它完全不用考虑缓存弄到应用程序卡死的问题,而且代码会与页面代码耦合,无法切换页面,反过来baseAdapter却是需要写清除缓存代码的,而且baseadapter代码会相对来说会简洁清晰页面与代码不会耦合,所以使用baseadapter会让代码变得简捷效率更加灵活操作
#SimpleAdapter实例
写在最后
由于本文罗列的知识点是根据我自身总结出来的,并且由于本人水平有限,无法全部提及,欢迎大神们能补充~
将来我会对上面的知识点一个一个深入学习,也希望有童鞋跟我一起学习,一起进阶。
提升架构认知不是一蹴而就的,它离不开刻意学习和思考。
**这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家,**梳理了多年的架构经验,筹备近1个月最新录制的,相信这份视频能给你带来不一样的启发、收获。
最近还在整理并复习一些Android基础知识点,有问题希望大家够指出,谢谢。
希望读到这的您能转发分享和关注一下我,以后还会更新技术干货,谢谢您的支持!
转发+点赞+关注,第一时间获取最新知识点
Android架构师之路很漫长,一起共勉吧!
层面来剖析的视频及资料分享给大家,**梳理了多年的架构经验,筹备近1个月最新录制的,相信这份视频能给你带来不一样的启发、收获。
[外链图片转存中…(img-rjoXOwDZ-1643890884579)]
[外链图片转存中…(img-3LdjBwro-1643890884580)]
最近还在整理并复习一些Android基础知识点,有问题希望大家够指出,谢谢。
希望读到这的您能转发分享和关注一下我,以后还会更新技术干货,谢谢您的支持!
转发+点赞+关注,第一时间获取最新知识点
Android架构师之路很漫长,一起共勉吧!