android适配器:BaseAdapter

2023年6月10日10:09:16

BaseAdapter是个抽象类,需要我们继承编写子类实现自定义ListView适配器

1.自定义的adapter类
class MyAdapter extends BaseAdapter
{

    View MyView;
    //数据源
    int img[]={R.drawable.f13,R.drawable.f14};
    String str[]={"图片1","图片2"};
    /**
     * @return  返回项的个数 
     */
    @Override
    public int getCount() {
        return str.length;
    }

    /**
     * @param i
     * @return 返回项对象
     */
    @Override
    public Object getItem(int i) {
        return null;
    }

    /**
     * @param i
     * @return  返回项的索引 
     */
    @Override
    public long getItemId(int i) {
        return i;
    }

    /**
     * @param i 项索引
     * @param view 项布局文件
     * @param viewGroup
     * @return 返回每一项的视图 
     */
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        /**
         *view参数是自定义的项布局文件,第一次执行时是null,所以需要进行判断,如果是null则利用LayoutInflater进行解析
         *之后系统会将view自动放入缓存,所以下次执行时则不用再次进行解析就可以使用,提高效率
         */
        if(view==null) {
        LayoutInflater inflater=LayoutInflater.from(adapterActivity.this);//根据上下文创建解析对象
            MyView =inflater.inflate(R.layout.base_adapter_item, null, false);//根据布局文件解析成view

        }
        MyView=view;
        //1.获取控件
        TextView textView=(TextView)MyView.findViewById(R.id.tv);
        ImageView imageView=(ImageView)MyView.findViewById(R.id.imageView);
        //2.根据索引从数据源中获取内容填充
        textView.setText(str[i]);
        imageView.setImageResource(img[i]);
        return MyView;
    }
}

2.执行的java代码

MyAdapter myAdapter=new MyAdapter();//创建adapter对象
listView.setAdapter(myAdapter);//listView

3.效果

 

  • 作者:可乐猫哈
  • 原文链接:https://blog.csdn.net/qq_39027256/article/details/88967724
    更新时间:2023年6月10日10:09:16 ,共 1136 字。