欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Adapter适配器和base-adapter-helper库的使用

发布时间:2025/3/20 编程问答 58 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Adapter适配器和base-adapter-helper库的使用 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

    • Adapter适配器
      • 概述
      • 关于视图重用
      • 关于ViewHolder
      • 使用步骤
    • base-adapter-helper库的使用
      • 1.导入库
      • 2.将库中的java文件复制到项目中
      • 3.编译并解决问题
      • 4.使用

Adapter适配器

概述

Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系:

关于视图重用

如果正常用listview的话一个数据对应一个控件,那么占用的内存就很大了,这时候就需要视图重用,不用的视图放入视图回收站convertView,如果视图回收站没有视图则创建视图,再更新数据时就不用创建新的视图了,直接用在视图回收站中创建好的视图就可以了。

关于ViewHolder

由于将数据赋值给视图时每次都要执行findViewById,这样也会浪费内存,所以创建一个ViewHolder类来保存你需要保存的控件,这样就不用执行多次find了。

使用步骤

创建主界面ListView和列表item视图

import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView;import java.util.ArrayList; import java.util.List;public class MainActivity1 extends AppCompatActivity {//定义一个类来存放你需要保存的控件class ViewHoider{TextView textView;}class Myadapter extends BaseAdapter{@Overridepublic int getCount() {//返回list的大小return list.size();}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {//取数据String data = list.get(position);//创建ViewHolder对象ViewHoider hoider = null;//当视图回收站中没有视图时if (convertView == null){//创建视图convertView=View.inflate(MainActivity1.this,R.layout.item,null);TextView textView = convertView.findViewById(R.id.tv_list);hoider = new ViewHoider();hoider.textView = textView;//将viewHolder与视图绑定convertView.setTag(hoider);}else {hoider= (ViewHoider) convertView.getTag();}//将数据赋值给视图对象hoider.textView.setText(data);return convertView;}}ListView listView;List<String> list;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//1.创建视图,创建并初始化ListView对象listView = findViewById(R.id.lv_show);//2.创建数据集合list = new ArrayList<>();//向集合中添加数据for (int i = 0; i <1000 ; i++) {list.add("数据"+i);}//3.创建并设置适配器Myadapter myadapter = new Myadapter();listView.setAdapter(myadapter);} }

结果

base-adapter-helper库的使用

  • 使用原始的adapter适配器,要解决视图重用,还有ViewHolder等问题,引用第三方库base-adapter-helper可以让库自己处理这些问题,可以很大程度上使代码更加简单,便捷。
  • base-adapter-helper库的地址https://github.com/JoanZapata/base-adapter-helper.git

1.导入库

2.将库中的java文件复制到项目中

3.编译并解决问题

由于base-adapter-helper库还引用了其他的库,所以会报错,将报错的代码注释即可。

4.使用

import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.VideoView;import com.joanzapata.android.BaseAdapterHelper; import com.joanzapata.android.QuickAdapter;import java.util.ArrayList; import java.util.List;public class MainActivity extends AppCompatActivity {ListView listView;List<String> list;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//1.创建并初始化ListView对象listView = findViewById(R.id.lv_show);//2.创建数据集合list = new ArrayList<>();//向集合中添加数据for (int i = 0; i <1000 ; i++) {list.add("数据"+i);}//3.创建并设置适配器QuickAdapter adapter = new QuickAdapter<String>(this, R.layout.item, list) {@Overrideprotected void convert(BaseAdapterHelper helper, String item) { //取数据并将数据赋值给视图helper.setText(R.id.tv_list, item);}};listView.setAdapter(adapter);} }

结果

总结

以上是生活随笔为你收集整理的Adapter适配器和base-adapter-helper库的使用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。