℃江让您从精通到入门:20步,写出一个详细的适配器(Adapter)

来源:互联网 发布:淘宝lol皮肤在哪买 编辑:程序博客网 时间:2024/06/03 23:06

详细过程都在代码里!!!

package com.dujiang.realproject.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.dujiang.realproject.R;import com.dujiang.realproject.application.BookData;import java.util.List;/** * 项目名:  Realproject * 包名:    com.dujiang.realproject.adapter * 创建者:  Dujiang0311 * 创建时间:2017/3/24 22:13 * 描述:    Book适配器 *//** * 1、些适配器的套路,首先要继承BaseAdapter,然后重写他的四个方法 * 2、写出他的构造方法 * 3、构造方法需要传递一个上下文 * 4、声明一个上下文 * 5、操作数据需要声明一个List * 6、声明List<> * 7、布局加载器 * 8、将声明的上下文和List传入BookAdapter中,并且赋值。 * 9、布局加载器LayoutInflater需要获取下系统服务 * 10、在getCount()方法中返回的是数据源的长度 mList.size(),getItem,指定对应的索引; * 11、getView()方法主要是用来初始化我们的数据源 * 12、做一个ListView的优化,写一个内部类 ViewHolder{} * 13、在getView()方法里面,先把ViewHolder声明出来 * 14、用ViewHolder的缓存进行判断是否为空,如果为空,则是第一次加载,否则不是 * 15、当为第一次加载,new一个ViewHolder,然后用布局加载器,添加一个布局(inflate)添加一个布局 * 16、去书写相应的布局,然后在内部类里面声明一下控件 * 17、声明完成之后,在第一次加载时,需要findViewById... * 18、设置缓存 * 19、else里面是已经不是第一次加载,所以缓存中是有数据的,需要直接提取出来 * 20、在把数据都加载之后(也就是无论是第一次,还是从缓存中得到),需要设置数据,把对应的实体类声明出来后,可以直接设置数据了 */public class BookAdapter extends BaseAdapter{    //4、声明一个上下文    private Context mContex;    //6、声明List<>    private List<BookData>mList;    //7、布局加载器    private LayoutInflater inflater;    private BookData data;    //2、构造方法    public BookAdapter(Context mContex,List<BookData>mList){        this.mContex = mContex;        this.mList = mList;        //9、获取系统服务(需要强制类型转换)        inflater = (LayoutInflater) mContex.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    }    @Override    public int getCount() {        return mList.size();    }    @Override    public Object getItem(int position) {        return mList.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        //声明ViewHolder        ViewHolder viewHolder = null;        if (convertView == null){            viewHolder = new ViewHolder();            //15、当为第一次加载,new一个ViewHolder,然后添加一个布局            convertView = inflater.inflate(R.layout.layout_book_item,null);            //17、声明完成之后,在第一次加载时,需要findViewById...            viewHolder.tv_name = (TextView) convertView.findViewById(R.id.tv_name);            viewHolder.tv_desc = (TextView) convertView.findViewById(R.id.tv_desc);            viewHolder.tv_money = (TextView) convertView.findViewById(R.id.tv_money);            //18、设置缓存            convertView.setTag(viewHolder);        }else {            //19、else里面是已经不是第一次加载,所以缓存中是有数据的,需要直接提取出来            viewHolder = (ViewHolder) convertView.getTag();        }        //20、在把数据都加载之后(也就是无论是第一次,还是从缓存中得到),需要设置数据        data = mList.get(position);        viewHolder.tv_name.setText(data.getName());        viewHolder.tv_desc.setText(data.getDesc());        viewHolder.tv_money.setText(data.getMoney());        return convertView;    }    class ViewHolder{        //16、去书写相应的布局,然后在内部类里面声明一下控件        private TextView tv_name;        private TextView tv_money;        private TextView tv_desc;    }}
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑打字法没了怎么办 家庭版密钥专业版系统怎么办 win7应用程序不能启动怎么办 win7用户密码忘记了怎么办 win7用户密码忘了怎么办 windows开不了机怎么办 网卡被卸载了怎么办 win7注销黑屏了怎么办 w7密码忘了怎么办 笔记本电脑键盘进水了怎么办 笔记本键盘进水了怎么办 笔记本进水键盘失灵怎么办 win7进不了系统怎么办 电脑显示屏两边黑屏怎么办 win8关机关不了怎么办 win10没激活黑屏怎么办 忘了产品密钥怎么办 小马易贷逾期怎么办 10系统未激活怎么办 win10账户被停用怎么办 win7激活码无效怎么办 windows显示不是正版怎么办 优酷上传错误怎么办 盗版系统会黑屏怎么办 安装了盗版系统怎么办 电脑鼠标不好用怎么办 自己组装电脑系统怎么办 ie双击没反应怎么办 电脑系统删了怎么办 产品密钥不知道怎么办 电脑安装ae崩溃怎么办 升级win10要密钥怎么办 系统里没有中文怎么办 小马激活后黑屏怎么办 电脑变成英文了怎么办 3dsmax英文版怎么办 手机设置越南文怎么办 电脑没有dvd驱动器怎么办 w7副本不是正版怎么办 win7硬盘速度慢怎么办 光盘装不了系统怎么办