关于android的BaseAdapter自定义适配器的理解与使用

本文介绍了如何在Android中自定义BaseAdapter,包括继承BaseAdapter并重写四个关键方法,如getCount(), getItem(), getItemId() 和 getView()。在getView()中,通过LayoutInflater加载布局,绑定控件并填充数据。同时,提供了样例代码展示了如何创建适配器并填充数据到ListView或GridView中,强调了使用Glide进行图片加载的重要性。" 100566966,5712925,JavaScript响应式布局与CSS样式和JS插件应用详解,"['JavaScript', '响应式布局', 'CSS样式', 'JS插件', 'Bootstrap']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,关于BaseAdapter

继承这个方法,重新4个方法。

其中,LayoutInFlater是用来加载android布局文件的。

这个类里需要三个参数,一是数据的列表,list<封装好的列表需要的数据>。二是int类型参数,用来加载列表布局名称的,其三是Context,用来给LayoutInFlate的inflate方法里的root参数默认为空。

然后生成他们的构造方法

重写的四个方法,第一个getCount()。用来表示生成窗体的数量。可以认为,数组中元素有多少个,窗体就有多少个。第二个方法getItem()。用来返回当前position位置的这一条数据,可以理解为数组中position位置的元素。第三个方法getItemId()。用来返回当前position位置的这一条数据ID。

第四个,重点:getView()。处理view和数组填充数据的这一过程。

第一个参数,position,当前位置,从0开始。

第二个参数,convertView,是Spinner,listview,gridview显示时用的窗体

第三个参数,parent,是父窗体,不过我没用。

首先,我们需要在方法里拿到所有数据,就是数值的全部数据。之后把数据分别get出来。

其次,我们需要绑定控件,这个简单,使用LayoutInFlater的.from(context)和.inflate(之前用来加载数据名称的int类型数据,null);

然后绑定控件,就是findviewById();

最后装载数据,图片我还是推荐用Glide,容错率低

在使用时,我们创建一个List<封装好的列表需要的数据>列表。然后一个循环,循环里直接add(new 封装名称(数据循环));最后把适配器装进列表名称里。

他需要是数据格式是你的每一条列表里显示的所有数据,并不想HM那个一样,需要String索引。

样例:

public class Liebiaospq extends BaseAdapter {

private List<Lbsj> lbsjs = new ArrayList<>();//加载列表数据

private int zzlbbj;

private Context context;

public Liebiaospq(List<Lbsj> lbsjs, int zzlbbj, Context context) {

this.lbsjs = lbsjs;

this.zzlbbj = zzlbbj;

this.context = context;

}

@Override

//窗体的数量

public int getCount() {

return lbsjs.size();

}

@Override

//返回当前position位置的这一条数据

public Object getItem(int position) {

return lbsjs.get(position);

}

@Override

//返回当前position位置的这一条数据的ID

public long getItemId(int position) {

return position;

}

@SuppressLint("ViewHolder")

@Override

//处理view和data填充数据的一个过程

//position:从0开始

//convertView:是Spinner,ListView中每一项要显示的view

//parent:父窗体,也就是Spinner,ListView,GridView了

//通常return的view也就是convertView

public View getView(int position, View convertView, ViewGroup parent) {

//首先,我们先拿到数据,

Lbsj lbsj = lbsjs.get(position);

String wenzi = lbsj.getWenzi();

int tupian = lbsj.getTupian();

//绑定控件并且装载数据

LayoutInflater layoutInflater = LayoutInflater.from(context);

View inflate = layoutInflater.inflate(zzlbbj, null);

//绑定控件

ImageView imageView = inflate.findViewById(R.id.tupian);

TextView textView = inflate.findViewById(R.id.wenzi);

//装载控件,图片我还是推荐用Glide

Glide.with(imageView.getContext()).load(tupian).into(imageView);

textView.setText(wenzi);

return inflate;

}

}

主方法里:

public void Gnan(){

for (int i = 0;i<tupian.length;i++){

lbsjs.add(new Lbsj(wenzi[i],tupian[i]));

}

Liebiaospq liebiaospq = new Liebiaospq(lbsjs, R.layout.lbbj, getActivity());

gridView.setAdapter(liebiaospq);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值