浅谈Android的BaseAdapter适配器模式
16lz
2021-01-26
本文参考:http://www.cnblogs.com/mandroid/archive/2011/04/05/2005525.html
前言:Android的BaseAdapter适配器模式应用之普遍,几乎没有一个App可以说不用到了。App的Listview Gridview GallerySpinner等显示组件只要是写,那就肯定用到BaseAdapter。
原理:BaseAdapter继承至Adapter,Adapter在Android中起着数据和UI显示的桥梁的作用。这是Adapter的原理,是至关重要的理解点。
借用一张图表示一下:
常用子类:
BaseAdapter ArrayAdapter SimpleCursorAdapter等。
ListView运用到BaseAdapter举例:
public class MainActivity extends ActionBarActivity {private ListView lv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lv = (ListView)findViewById(R.id.lv);lv.setAdapter(new LvAdapter());}private class LvAdapter extends BaseAdapter{@Overridepublic int getCount() {// TODO Auto-generated method stubreturn 20;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubconvertView = getLayoutInflater().inflate(R.layout.lv_items, null);TextView txt = (TextView)convertView.findViewById(R.id.txt);txt.setText("第" + position + "个");return convertView;}}}
这是MainActivity部分。
Listview声明部分。
<?xml version="1.0" encoding="utf-8"?>
这是listview的item部分,在这随意添加view,在MainActivity中显示处理,达到了任意自定义UI的效果。
后记:
在MainActivity中的代码convertView = getLayoutInflater().inflate(R.layout.lv_items, null);其实执行了20次,而我们知道执行一次就好了,那么问题来了,请看本博客的另一篇文章Android的Holder模式。
更多相关文章
- 将Android下的可执行文件以静态库的形式进行编译
- android 控制软键盘显示和隐藏
- Android(安卓)进程间通信实现原理分析
- Android(安卓)Studio中TextView文本过长滚动显示方法
- 学徒浅析Android——Android(安卓)8.0 Lock解锁流程
- 暂时只会这种导航,实时显示自己的位置,,求其他更好的方法,或api
- MPAndroidChart项目实战(四)——柱状图实现及X轴文字不显示问题和
- android8.0通知
- Android软键盘(五)如何判断软键盘是否显示