【Android】-- 下拉列表Spinner、适配器Adapter

这篇具有很好参考价值的文章主要介绍了【Android】-- 下拉列表Spinner、适配器Adapter。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、下拉列表 Spinner

Spinner用于从一串列表中选择某项,功能类似于单选按钮的组合。

例:下拉列表框

【Android】-- 下拉列表Spinner、适配器Adapter【Android】-- 下拉列表Spinner、适配器Adapter

 XML文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="下拉列表框"/>

    <Spinner
        android:id="@+id/sp_dropdown"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spinnerMode="dropdown"/>
<!--    对话框模式将此改成dialog-->
        android:spinnerMode="dialog"/>


</LinearLayout>

 java代码

public class SpinnerDropdwnActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    private Spinner sp_dropdown;
//    定义下拉列表需要显示的文本数组
    private final static String[] starArray = {"天安门广场","天坛公园","故宫","北京动物园"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner_dropdwn);
        sp_dropdown = findViewById(R.id.sp_dropdown);
//        声明数组适配器
        ArrayAdapter<String> startAdapter = new ArrayAdapter<>(this,R.layout.item_select,starArray);
//        设置下拉框标题,对话框模式才显示
        sp_dropdown.setPrompt("请选择地点");
        sp_dropdown.setAdapter(startAdapter);
//        设置默认显示第一项
        sp_dropdown.setSelection(0);
//        给下拉框设置选择监听器,一旦用户选中某一项,就触发监听器的onItemSelected方法
        sp_dropdown.setOnItemSelectedListener(this);

    }

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
        Toast.makeText(this,"你选择的是"+starArray[position],Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
}

layout下创建item_select.xml文件

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:gravity="center"
    android:textColor="#0000ff"
    android:textSize="17sp"
    android:text="北京"/>

二、适配器Adapter

适配器负责从数据集合中取出对应的数据显示到条目布局上。

【Android】-- 下拉列表Spinner、适配器Adapter

 1、简单适配器SimpleAdapter

SimpleAdapter允许在列表项中同时展示文本与图片

例:

【Android】-- 下拉列表Spinner、适配器Adapter【Android】-- 下拉列表Spinner、适配器Adapter

 XML文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="简单适配器"
        android:textSize="17sp"/>

    <Spinner
        android:id="@+id/sp_icon"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spinnerMode="dropdown"/>
</LinearLayout>

java代码

public class SpinnerIconActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
//定义下拉列表需要显示的图标数组
    private static final int[] iconArray = {
            R.drawable.csdn,R.drawable.csdn,R.drawable.csdn,R.drawable.csdn
};
//定义下拉列表需要显示的名称数组
    private static final String[] starArray = {"CSDN","CSDN","CSDN","CSDN"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner_icon);
//        声明一个映射对象的列表,用于保存图标与名称配对信息
        List<Map<String,Object>> list = new ArrayList<>();
//        iconArray是图标数组,starArray是名称数组
        for (int i = 0; i < iconArray.length; i++) {
            Map<String,Object> item = new HashMap<>();
            item.put("icon",iconArray[i]);
            item.put("name",starArray[i]);
            list.add(item);
        }
//        声明下拉列表的简单适配器,其中指定图标与文本两组数据
        SimpleAdapter startAdapter = new SimpleAdapter(this,list,R.layout.item_simple,
                new String[]{"icon","name"},
                new int[]{R.id.iv_icon,R.id.tv_name});
        Spinner sp_icon = findViewById(R.id.sp_icon);
        sp_icon.setAdapter(startAdapter);
        sp_icon.setSelection(0);
        sp_icon.setOnItemSelectedListener(this);
    }

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(this,"你选择的是"+starArray[i],Toast.LENGTH_SHORT);
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
}

layout下新建item_icon.xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/iv_icon"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="50dp"
        android:src="@drawable/csdn"/>

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="0dp"
        android:layout_weight="3"
        android:layout_height="match_parent"
        android:gravity="center"
        android:textColor="#ff0000"
        android:textSize="17sp"
        android:text="北京"/>

</LinearLayout>

2、基本适配器BaseAdapter

BaseAdapter是一种适应性更强的基本适配器

【Android】-- 下拉列表Spinner、适配器Adapter

例:

XML文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="基本适配器"
        android:textSize="17sp"/>

    <Spinner
        android:id="@+id/sp_base"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spinnerMode="dropdown"/>
</LinearLayout>

java代码

public class BaseAdapterActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    private List<CSDN> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base_adapter);
        Spinner sp_base = findViewById(R.id.sp_base);
//        获取默认的列表
        list = CSDN.getDefaultList();
//        构建适配器
        CSDNBaseAdapter adapter = new CSDNBaseAdapter(this, list);
        sp_base.setAdapter(adapter);
        sp_base.setSelection(0);
        sp_base.setOnItemSelectedListener(this);
    }

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(this,"你选择的是"+list.get(i).name,Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
}

由于base适配器是抽象类不能直接使用,创建适配器类java代码

public class CSDNBaseAdapter extends BaseAdapter {
    private Context mContext;
    private List<CSDN> mlist;

    public CSDNBaseAdapter(Context mContext, List<CSDN> list) {
        this.mContext = mContext;
        this.mlist = list;
    }

    @Override
    public int getCount() {
        return mlist.size();
    }

    @Override
    public Object getItem(int i) {
        return mlist.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        return null;
    }
}

实体类

public class CSDN {
    public int image;
    public String name;
    public String desc;

    public CSDN(int image,String name,String desc){
        this.image = image;
        this.name = name;
        this.desc = desc;
    }
    private static int[] iconArray = {
            R.drawable.csdn,R.drawable.csdn,R.drawable.csdn,R.drawable.csdn
    };
    private static String[] nameArray = {"CSDN","CSDN","CSDN","CSDN"};
    private static String[] descArray = {
            "shewyoo",
            "shewyoo",
            "shewyoo",
            "shewyoo"
    };
    public static List<CSDN> getDefaultList(){
        List<CSDN> list = new ArrayList<>();
        for (int i = 0; i < iconArray.length; i++) {
            list.add(new CSDN(iconArray[i],nameArray[i],descArray[i]));
        }
        return list;
    }
}

layout下创建item_list.xml文件文章来源地址https://www.toymoban.com/news/detail-426853.html

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

<!--    图像视图-->
    <ImageView
        android:id="@+id/iv_icon"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="80dp"
        android:scaleType="fitCenter"
        android:src="@drawable/csdn"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="5dp"
        android:layout_weight="3"
        android:orientation="vertical">

<!--        文本视图-->
        <TextView
            android:id="@+id/tv_name"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="start|center"
            android:textColor="@color/black"
            android:textSize="20sp"
            android:text="CSDN"/>
<!--        描述文本-->
        <TextView
            android:id="@+id/tv_desc"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2"
            android:gravity="start|center"
            android:textColor="@color/black"
            android:textSize="13sp"
            android:text="shewyoo"/>
    </LinearLayout>
</LinearLayout>

到了这里,关于【Android】-- 下拉列表Spinner、适配器Adapter的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android基础Adapter适配器详解

    一、概念 Adapter是后端数据和前端显示UI的适配器接口。常见的View如ListView、GridView等需要用到Adapter. BaseAdapter:抽象类,实际开发中继承这个类并且重写相关方法,用得最多的一个Adapter! ArrayAdapter:支持泛型操作,只能展现一行文字,最简单的一个Adapter! SimpleAdapter:同样具有

    2024年02月22日
    浏览(35)
  • 【Android】BaseQuickAdapter使用(RecyclerView万能适配器)

    RecyclerView是Android用于取代ListView的SDK,它的灵活性和可替代性都比ListView更好,但RecyclerView也存在一些问题: 高度不能自适应、最后一个 Item 显示不全被遮挡等。而无论ListView还是RecyclerView都必不可少地会使用到适配器,其配置比较繁琐。 BaseQuickAdapter 可以对繁琐的适配器进

    2024年02月06日
    浏览(82)
  • Android 万能的RecyclerView适配器(BaseRecyclerViewAdapterHelper)

    基本使用: 快速使用 如果Adapter特别简单,可以使用BuickViewHolder 点击事件: item 点击事件 item 长按事件 item 子控件点击事件 item 子控件长按事件 点击事件(扩展) 去除点击抖动(双击)的点击方法。 默认500毫秒间隔,可以传递参数修改。 数据操作 设置数据集合 修改某一位

    2024年04月10日
    浏览(37)
  • 一线互联网架构师360°全方面性能调优,android适配器ui

    为什么要使用多进程 对于进程的概念,来到这里的都是编程修仙之人,就不再啰嗦了,相信大家倒着、跳着、躺着、各种姿势都能背出来。 相信很多同学在实际开发中,基本都不会去给app划分进程,而且,在Android中使用多进程,还可能需要编写额外的进程通讯代码,还可能

    2024年04月13日
    浏览(44)
  • 11_Pulsar Adaptors适配器、kafka适配器、Spark适配器

    2.3. Pulsar Adaptors适配器 2.3.1.kafka适配器 2.3.2.Spark适配器 2.3.1.kafka适配器 Pulsar 为使用 Apache Kafka Java 客户端 API 编写的应用程序提供了一个简单的解决方案。 在生产者中, 如果想不改变原有kafka的代码架构, 就切换到Pulsar的平台中, 那么Pulsar adaptor on kafka就变的非常的有用了, 它可

    2024年02月14日
    浏览(47)
  • 网络适配器是什么 网络适配器有什么用

    网络适配器是什么? 网络适配器又称网卡或网络接口卡(NIC),英文名NetworkInterfaceCard。它是使计算机联网的设备。平常所说的网卡就是将PC机和LAN连接的网络适配器。网卡(NIC) 插在计算机主板插槽中,负责将用户要传递的数据转换为网络上其它设备能够识别的格式,通过

    2024年02月05日
    浏览(57)
  • Spinner(下拉列表)的使用

      目录 一、介绍: Spinner相关属性: 二、例子 例子一:(含适配器) 完整代码: 例子二(不含适配器): 完整代码:         安卓的Spinner是一个下拉菜单控件,通常用于选择一组选项中的一个。它可以为用户提供一种简单的交互方式,使其能够快速轻松地对应用程序中

    2024年02月06日
    浏览(39)
  • 适配器模式:代理、适配器、桥接、装饰,这四个模式有何区别?

            关于适配器模式,今天我们主要学习它的两种实现方式,类适配器和对象适配器,以及5种常见的应用场景。同时,我还会通过剖析slf4j日志框架,来给你展示这个模式在真实项目中的应用。除此之外,在文章的最后,我还对代理、桥接、装饰器、适配器,这4种代

    2024年02月13日
    浏览(56)
  • 【C++】STL 算法 ⑩ ( 函数适配器 | 函数适配器概念 | 函数适配器分类 | 函数适配器辅助函数 | std::bind2nd 函数原型及示例 | std::bind 函数原型及示例 )

    在 STL 中 预定义了很多 函数对象 , 如果要 对 函数对象 的 参数 / 返回值 进行 计算 或 设置 , 可以 使用 \\\" 函数适配器 \\\" 实现上述需求 ; \\\" 函数适配器 \\\" 可以 将 已存在的 函数对象 转化为 另一种符合要求的 函数对象 ; \\\" 函数适配器 \\\" 定义在 functional 头文件 中 ; \\\" 函数适配器

    2024年02月02日
    浏览(65)
  • 网络适配器没有启用tcp/ip服务,WLAN 适配器的驱动程序可能出现问题

    笔记本抽风。登得上wifi和热点,但网不能用,“无法访问Internet”   win10自带的网络诊断提示: “找到问题 WLAN 适配器的驱动程序可能出现问题 Windows 无法自动将 IP 协议堆栈绑定到网络适配器。 未修复 无线网络 适配器出现问题 已失败 ” 试了试火绒的断网修复,提示网络

    2024年02月11日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包