iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android常用控件Spinner的使用(详解)
  • 844
分享到

Android常用控件Spinner的使用(详解)

androidjavaandroidstudio 2023-08-31 09:08:01 844人浏览 八月长安
摘要

一、Spinner介绍 在Android开发过程中,Spinner下拉控件是比较常用的控件,它可以以下拉框和dialog的方式进行展示。默认是下拉框方式。 Spinner效果 上图可以看出实现Spi

一、Spinner介绍

Android开发过程中,Spinner下拉控件是比较常用的控件,它可以以下拉框和dialog的方式进行展示。默认是下拉框方式。

Spinner效果

在这里插入图片描述
上图可以看出实现Spinner的方式有两种:一、ArrayAdater 数组适配器 二、自定义适配器。

ArrayAdapter所需要的代码

1、布局界面activity_main.xml代码

在这里插入图片描述

2、MainActivity.java代码

在这里插入图片描述

3、spinner.item_1.xml代码

在这里插入图片描述

@BindView()代码解释

首先说明一下@BindView的作用,从字面意思可以看出这个意思是:绑定视图。他的作用等同于  spinner=findViewById(R.id.main_spinner);,需要使用的小伙伴可以在app目录下的bulid.grale中添加这二行代码。implementation 'com.jakewharton:butterknife:10.0.0'annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'`然后在MainAcitivty.java的Oncreate方法里面添加       ButterKnife.bind(this);

下面是bind的两个参数

 public static Unbinder bind(@NonNull Object target, @NonNull View source) {} //Obejct:默认填this //source:这里需要加入View,在自定义适配器中有用到
    class ViewHolder {        @BindView(R.id.spinner_item_2_imageView)        ImageView imageView2;        @BindView(R.id.spinner_item_2_name)        TextView name2;        public ViewHolder(View view) {            ButterKnife.bind(this, view);        }    }}

ArrayAdapter代码解析

在这里插入图片描述

String:在这里不一定是String,也可以是int ,float,double等等,根据你数据的类型判断这里改填什么
getBaseContext:这里需要传入Context的对象,直接getBaseContext或者getContext都可以。
R.layout.spinner.item_1:这里需要传入一个布局,直接new Layout Resouce File就可以了。
data:数据源

ArrayAdapter数组适配器 也就介绍完了,看起来还是很简单,接下来,我们需要实现图片+文字的方式出现,需要使用到自定义适配器了。

自定义适配器所需要的代码

1、activity.main.xml布局

    <Spinner        android:id="@+id/main_spinner2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="5dp"        android:spinnerMode="dropdown"        />        //android:spinnerMode="dropdown"         dialog方式展示

2、spinner.item_2.xml代码

<LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="horizontal">    <ImageView        android:id="@+id/spinner_item_2_imageView"        android:layout_width="match_parent"        android:layout_height="80dp"        android:layout_weight="1"        android:src="@drawable/ic_launcher_background" />    <TextView        android:id="@+id/spinner_item_2_name"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:layout_weight="1"        android:gravity="center"        android:text="下拉框1"/></LinearLayout>//由于TextView和ImageView在同一个LinearLayout中,我们将布局平分两部分//在View中分别添加android:layout_weight="1"

3、SpinnerBean.java代码

public class SpinnerBean {    int ImageView;    String name;    public int getImageView() {        return ImageView;    }    public void setImageView(int imageView) {        ImageView = imageView;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public SpinnerBean(int imageView, String name) {        ImageView = imageView;        this.name = name;    }}

4、SpinnerAdapter.java

public class SpinnerAdapter extends BaseAdapter {    Context context;    List<SpinnerBean> mDatas;    public SpinnerAdapter(Context context, List<SpinnerBean> mDatas) {        this.context = context;        this.mDatas = mDatas;    }    @Override    public int getCount() {        return mDatas.size();    }    @Override    public Object getItem(int position) {        return mDatas.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int posiiton, View convertView, ViewGroup parent) {        ViewHolder holder = null;        if (convertView == null) {            convertView = LayoutInflater.from(context).inflate(R.layout.spinner_item_2, null);            holder = new ViewHolder(convertView);            convertView.setTag(holder);        } else {            holder = (ViewHolder) convertView.getTag();        }        holder.imageView2.setImageResource(mDatas.get(posiiton).getImageView());        holder.name2.setText(mDatas.get(posiiton).getName());        return convertView;    }    class ViewHolder {        @BindView(R.id.spinner_item_2_imageView)        ImageView imageView2;        @BindView(R.id.spinner_item_2_name)        TextView name2;        public ViewHolder(View view) {            ButterKnife.bind(this, view);        }    }}

MainActivty.java代码

    List<SpinnerBean> customData;    private void initSpinner2() {        customData = new ArrayList<>();        SpinnerBean spinnerBean = new SpinnerBean(R.drawable.ic_launcher_background, "下拉框1");        SpinnerBean spinnerBean2 = new SpinnerBean(R.mipmap.ic_launcher_round, "下拉框2");        SpinnerBean spinnerBean3 = new SpinnerBean(R.drawable.ic_launcher_background, "下拉框3");        SpinnerBean spinnerBean4 = new SpinnerBean(R.mipmap.ic_launcher_round, "下拉框4");        SpinnerBean spinnerBean5 = new SpinnerBean(R.drawable.ic_launcher_background, "下拉框5");        SpinnerBean spinnerBean6 = new SpinnerBean(R.mipmap.ic_launcher_round, "下拉框6");        SpinnerBean spinnerBean7 = new SpinnerBean(R.drawable.ic_launcher_background, "下拉框7");        SpinnerBean spinnerBean8 = new SpinnerBean(R.mipmap.ic_launcher_round, "下拉框8");        SpinnerBean spinnerBean9 = new SpinnerBean(R.drawable.ic_launcher_background, "下拉框9");        customData.add(spinnerBean);        customData.add(spinnerBean2);        customData.add(spinnerBean3);        customData.add(spinnerBean4);        customData.add(spinnerBean5);        customData.add(spinnerBean6);        customData.add(spinnerBean7);        customData.add(spinnerBean8);        customData.add(spinnerBean9);        SpinnerAdapter spinnerAdapter = new SpinnerAdapter(getBaseContext(), customData);        spinner2.setAdapter(spinnerAdapter);    }

自定义适配器代码解析

首先介绍一下为什么需要创建SpinnerBean,java和spinner.item_2.xml。使用Android已有的适配器只能指定一个数据类型,无法加载由多个(String、int)组成的Bean,这些就使用到Java中的泛型

List泛型的作用:可以动态的添加索引序列。其中SpinnerBean.java就给我们展示如何定义一个泛型。

    int ImageView;    String name;       public SpinnerBean(int imageView, String name) {        ImageView = imageView;        this.name = name;    }    //按住alt+int键        快速构建get、set和构造方法    //创建好之后,在MainAcitivty中new List就可以添加数据了

SpinnerAdapter自定义适配器

自定义适配器中有四种方法:getCount(),getItem(),getItemId(),getView()
getCount():获取数据的总条数
getItem():获取索引值所对应的对象
getItemId():获取索引值所对应的对象名称
getView():获取界面

前三个比较容易理解,说一下第四个getView()
在这里插入图片描述

position:表示位置
convertView:这里是自定义适配器优化的一个方面,可以对一个View进行缓存,只需要改变数据即可,不用创建getCount()个View。
parent:…

convertView内存优化的代码

        ViewHolder holder = null;        if (convertView == null) {//convertView暂时还没有布局        //将需要展示的layout赋值给convertView,方便使用            convertView = LayoutInflater.from(context).inflate(R.layout.spinner_item_2, null);            //将带有convertView的ViewHolder赋值给holder            holder = new ViewHolder(convertView);            //设置View            convertView.setTag(holder);        } else {            holder = (ViewHolder) convertView.getTag();        }

来源地址:https://blog.csdn.net/qq_62079241/article/details/129719066

--结束END--

本文标题: Android常用控件Spinner的使用(详解)

本文链接: https://www.lsjlt.com/news/385072.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android常用控件Spinner的使用(详解)
    一、Spinner介绍 在Android开发过程中,Spinner下拉控件是比较常用的控件,它可以以下拉框和dialog的方式进行展示。默认是下拉框方式。 Spinner效果 上图可以看出实现Spi...
    99+
    2023-08-31
    android java android studio
  • Android之Spinner使用详解
    Spinner是Android中常用的控件之一,用于显示一个下拉列表,用户可以从中选择一个选项。以下是关于Spinner的使用详解:...
    99+
    2023-09-09
    Android
  • 怎么在Android中使用Spinner控件
    今天就跟大家聊聊有关怎么在Android中使用Spinner控件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、使用方法在layout中创建Spinner控件<Spinner...
    99+
    2023-05-30
    android spinner
  • Android之Spinner用法详解
    目录一、Spinner的两种展示样式二、Spinner相关方法三、Spinner用法举例XML布局文件activity_main.xml选中文字样式item_select.xml列表...
    99+
    2024-04-02
  • Android控件Spinner的作用有哪些
    Android控件Spinner的作用主要有以下几点: 提供下拉选择功能:Spinner控件可以通过下拉列表的形式显示多个选项,...
    99+
    2023-10-24
    Android Spinner
  • Android控件Spinner的用法是什么
    Spinner是Android平台上的一种下拉列表控件,用于显示可选项列表,并允许用户从中选择一个选项。 使用Spinner的步骤如...
    99+
    2023-10-22
    Android Spinner
  • Android最常用的控件ListView(详解)
    ListView是Android开发中最常用的控件之一,用于显示一个可滚动的列表,其中每个列表项都是可以点击的。ListView的使...
    99+
    2023-09-09
    Android
  • 如何在Android中使用Spinner下拉菜单控件
    这期内容当中小编将会给大家带来有关如何在Android中使用Spinner下拉菜单控件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。activity_main.xml<xml versio...
    99+
    2023-05-30
    android spinner
  • Android中如何使用Spinner组件
    今天就跟大家聊聊有关Android中如何使用Spinner组件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Android Spinner 组件Spinner: 下拉组件使用事项:布...
    99+
    2023-05-30
    android spinner
  • Android Spinner和GridView组件的使用示例
    目录一. 概述:二. 实现三. 美化四. GridView一. 概述:         Spinner是我们所熟悉的下拉框列表。与ListVi...
    99+
    2024-04-02
  • Android下拉列表框Spinner使用方法详解
    本文实例为大家分享了Android下拉列表框Spinner的基本使用,供大家参考,具体内容如下 文件目录如下: 在activity_main.xml中布局一个下拉列表框Spinne...
    99+
    2024-04-02
  • Android控件AppWidgetProvider使用方法详解
    介绍AppWidgetProvider是Android中提供的用于实现桌面小工具的类,其本质是一个广播,即BroadcastReceiver,在实际的使用中,把AppWidgetProvider当成一个BroadcastReceiver即可...
    99+
    2023-05-30
    android appwidgetprovider pp
  • android中spinner怎么使用
    要使用Spinner控件,您需要在布局文件中添加Spinner标签,并在java代码中找到该Spinner控件并设置其适配器。 在...
    99+
    2024-02-29
    android
  • Android侧滑菜单控件DrawerLayout使用详解
    DrawerLayout是Android V4包下一个带有侧滑功能的布局控件,可以根据手势展开与隐藏侧边栏,也可以随着侧边栏的点击改变主界面区的内容。并且只需要按照DrawerLayout规定的布局格式进行布局,即可实现左右侧滑效果。一、约...
    99+
    2023-05-30
  • Android表格自定义控件使用详解
    近期公司要做报表功能,在网上搜索下表格的样式后便自己写了一个自定义的表格控件,该表格控件能根据设置的数据中数据的最大值自动设置左侧信息栏显示的值,使得条形图能尽量的充满控件,条形图部...
    99+
    2024-04-02
  • android九宫格锁屏控件使用详解
    本文实例为大家分享了android九宫格锁屏控件的具体代码,供大家参考,具体内容如下 代码: public class LockView extends View {     //...
    99+
    2024-04-02
  • Android SearchView搜索控件使用方法详解
    本文实例为大家分享了Android SearchView搜索控件的具体实现代码,供大家参考,具体内容如下 方法介绍 setQueryHint 设置 Hint 的文字内容 setMax...
    99+
    2024-04-02
  • Android基础控件RadioGroup使用方法详解
    RadioGroup是Android中的一个基础控件,用于实现一组单选按钮,同一时间只能选择一个单选按钮。RadioGroup的使用...
    99+
    2023-08-08
    Android
  • Android Spinner和GridView组件怎么用
    这篇文章将为大家详细讲解有关Android Spinner和GridView组件怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一. 概述:      &nbs...
    99+
    2023-06-29
  • Android自定义控件之日期选择控件使用详解
    Android日期选择控件效果如下:调用的代码:@OnClick(R.id.btn0) public void btn0() { final AlertDialog dialog = new AlertDialog.Builder(cont...
    99+
    2023-05-31
    android 日期 控件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作