android-BaseAdapter和getView

看来很多大神的,觉得他们写的都很好,为了加深理解,自己归纳下

搜先,适配器的简单实用

适配器(adapter)
相当与一个桥梁链接数据和显示控件,将数据配置到显示控件上
如将 String[] strs = {"基神","B神","翔神","曹神","J神"};
中的数据配置到ListView中
//生成中间桥梁
ArrayAdapter<string> adapter = new ArrayAdapter<string>
(this,android.R.layout.simple_expandable_list,strs);
//配置
list_test.setAdapter(adapter);


自定义baseadapter
注意点:
1、构造函数
构造函数中的两个变量就是baseadapter需要传递的变量
public MyAdapter(List<Map<String, Object>> datas, Context mContext) {  
        this.datas = datas;  
        this.mContext = mContext;  
    }  
//调用
myAdapter = new MyAdapter(list, this); 


2、  public View getView(int position, View convertView, ViewGroup parent) { }函数
这个涉及到的就比较复杂
参数说明:
public View getView(int position, View convertView, ViewGroup parent) 
第一个参数position---该视图在适配器数据中的位置 
第二个参数convertView---旧视图 
第三个参数parent: 此视图最终会被附加到的父级视图


函数解释
/*converview相当于一个view控件的缓存装置,
它将我们定义好显示没一行item的布局文件压缩成一个视图,
布局中的部分view都在它里面。*/
//LayoutInflater来加载布局的 ,
调用它的inflate()方法来加载布局inflate()方法一般接收两个参数,
第一个参数就是要加载的布局id,第二个参数是指给该布局的外部再嵌套一层父布局,
如果不需要就直接传null。*/
/*ViewHolder,里面的成员就是我们没一行item布局文件中的控件集合。*/
public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        //控件不存在就加载,不然直接从converview里获取
        if (convertView == null) {
            convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list, parent, false);
            
            holder = new ViewHolder();
            holder.img_icon = (ImageView) convertView.findViewById(R.id.img_icon);
            holder.txt_content = (TextView) convertView.findViewById(R.id.txt_content);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        //重新设置变量
        holder.img_icon.setImageResource(mData.get(position).getImgId());
        holder.txt_content.setText(mData.get(position).getContent());
        return convertView;
    }




3、其他函数
  @Override  
    public int getCount() {  
        // TODO Auto-generated method stub  
        return datas.size();// 返回数据的总数  
    }  
  
    @Override  
    public Object getItem(int position) {  
        // TODO Auto-generated method stub  
        return datas.get(position);// 返回在list中指定位置的数据的内容  
    }  
  
    @Override  
    public long getItemId(int position) {  
        // TODO Auto-generated method stub  
        return position;// 返回数据在list中所在的位置  

    }  



代码

class MyAdapter extends BaseAdapter 
    { 
        private Context context; 
        public MyAdapter(Context context) 
        { 
            this.context = context; 
        } 
        @Override 
        publicint getCount() { 
            // How many items are in the data set represented by this Adapter.(在此适配器中所代表的数据集中的条目数) 
            return0; 
        } 
 
        @Override 
        public Object getItem(int position) { 
            // Get the data item associated with the specified position in the data set.(获取数据集中与指定索引对应的数据项) 
            returnnull; 
        } 
 
        @Override 
        publiclong getItemId(int position) { 
            // Get the row id associated with the specified position in the list.(取在列表中与指定索引对应的行id) 
            return0; 
        } 
 
        @Override 
        public View getView(int position, View convertView, ViewGroup parent) { 
            // Get a View that displays the data at the specified position in the data set. 
            returnnull; 
        } 
         
    } 
class MyAdapter extends BaseAdapter
    {
        private Context context;
        public MyAdapter(Context context)
        {
            this.context = context;
        }
        @Override
        public int getCount() {
            // How many items are in the data set represented by this Adapter.(在此适配器中所代表的数据集中的条目数)
            return 0;
        }

        @Override
        public Object getItem(int position) {
            // Get the data item associated with the specified position in the data set.(获取数据集中与指定索引对应的数据项)
            return null;
        }

        @Override
        public long getItemId(int position) {
            // Get the row id associated with the specified position in the list.(取在列表中与指定索引对应的行id)
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // Get a View that displays the data at the specified position in the data set.
            return null;
        }
        
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值