需要图片集或源码请点赞关注收藏后评论区留言~~~
基本适配器BaseAdapter
由前几篇博客的内容可以得知,数组适配器适用于纯文本的列表数据,简单适配器适用于带图标的列表数据,然而实际应用常常有更复杂的列表,比如每个列表项存在三个以上的控件,这种情况即便是简单适配器也很吃力,而且不易扩展,为此Android提供了一种适应性更强的基本适配器BaseAdapter,该适配器允许开发者在别的代码文件中编写操作代码,大大提高了代码的可读性和可维护性
从BaseAdapter派生的数据适配器主要实现以下五种方法
构造方法 指定需要处理的数据集合
getCount 获取列表项的个数
getItem 获取列表项的数据
getItemId 获取列表项的编号
getView 获取每项的展示视图
以下拉框控件为载体,演示如何操作BaseAdapter,具体编码过程分为三步
1:编写列表项的布局文件
2:写个新的适配器BaseAdapter 实现对列表项的管理操作
3:在页面代码中创建该适配器实例 并交给下拉框设置
效果如下 可以同时显示多个图片和文本 更加美观丰富
最后代码如下
Java类代码
package com.example.chapter08; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Spinner; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.example.chapter08.adapter.PlanetBaseAdapter; import com.example.chapter08.bean.Planet; import java.util.List; public class BaseAdapterActivity extends AppCompatActivity { private List<Planet> planetList; // 声明一个行星列表 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_base_adapter); initPlanetSpinner(); // 初始化行星列表的下拉框 } // 初始化行星列表的下拉框 private void initPlanetSpinner() { // 获取默认的行星列表,即水星、金星、地球、火星、木星、土星 planetList = Planet.getDefaultList(); // 构建一个行星列表的适配器 PlanetBaseAdapter adapter = new PlanetBaseAdapter(this, planetList); // 从布局文件中获取名叫sp_planet的下拉框 Spinner sp_planet = findViewById(R.id.sp_planet); sp_planet.setPrompt("请选择行星"); // 设置下拉框的标题 sp_planet.setAdapter(adapter); // 设置下拉框的列表适配器 sp_planet.setSelection(0); // 设置下拉框默认显示第一项 // 给下拉框设置选择监听器,一旦用户选中某一项,就触发监听器的onItemSelected方法 sp_planet.setOnItemSelectedListener(new MySelectedListener()); } // 定义一个选择监听器,它实现了接口OnItemSelectedListener private class MySelectedListener implements OnItemSelectedListener { // 选择事件的处理方法,其中arg2代表选择项的序号 public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Toast.makeText(BaseAdapterActivity.this, "您选择的是" + planetList.get(arg2).name, Toast.LENGTH_LONG).show(); } // 未选择时的处理方法,通常无需关注 public void onNothingSelected(AdapterView<?> arg0) {} } }
XML文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="5dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="行星的基本适配器" android:textColor="@color/black" android:textSize="20sp" /> <Spinner android:id="@+id/sp_planet" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:spinnerMode="dialog" />" </LinearLayout>
创作不易 觉得有帮助请点赞关注收藏~~~