Android : Spinner(列表选项框) + BaseAdapter -简单应用

 ​​容器与适配器:​​​​​        http://t.csdnimg.cn/ZfAJ7

示例图:

实体类 Demo.java

package com.example.mygridviewadapter.entity;public class Demo {private String  text;private  int img;public Demo(String text, int img) {this.text = text;this.img = img;}public String getText() {return text;}public void setText(String text) {this.text = text;}public int getImg() {return img;}public void setImg(int img) {this.img = img;}
}

适配器 写个类继承BaseAdapter 

package com.example.myspinnerbaseadapter;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;import com.example.myspinnerbaseadapter.entity.Data;import java.util.List;public class DataAdapter extends BaseAdapter {private List<Data> dataList;private Context context;static class ViewHoler{ImageView imageView;TextView textView;}//BaseAdapter最基本的几个方法:// 1. getCount 填充的数据集数// 2.getItem 数据集中指定索引对应的数据项// 3. getItemId 指定行所对应的ID// 4. getView 每个Item所显示的类容public DataAdapter(List<Data> dataList, Context context) {this.dataList = dataList;this.context = context;}@Overridepublic int getCount() {return dataList.size();}@Overridepublic Object getItem(int position) {return dataList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHoler holer = null;if(holer == null){holer = new ViewHoler();//获取 自定义view布局 获取相关属性convertView = LayoutInflater.from(context).inflate(R.layout.spinner_view,parent,false);holer.imageView = convertView.findViewById(R.id.bntImg);holer.textView = convertView.findViewById(R.id.btnTitle);convertView.setTag(holer);}else {holer = (ViewHoler)convertView.getTag();}//设置值holer.imageView.setBackgroundResource(dataList.get(position).getImg());holer.textView.setText(dataList.get(position).getTitile());return convertView;}
}

MainActivity.java

package com.example.myspinnerbaseadapter;import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;import com.example.myspinnerbaseadapter.entity.Data;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{//组件private Spinner spinnerOne,spinner;private List<Data> dataList =null;private Context context;private DataAdapter dataAdapter =null;//图片private int[] arr = {R.mipmap.a,R.mipmap.b,R.mipmap.c,R.mipmap.d,R.mipmap.e,R.mipmap.f,};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//上下文context = this;spinnerOne = findViewById(R.id.tbnSpiOne);spinner = findViewById(R.id.tbnSpi);dataList = new ArrayList<>();//循环传入数据for (int i = 0 ; i < arr.length;i++){dataList.add(new Data("样式"+i,arr[i]));}dataAdapter = new DataAdapter(dataList,context);// 往容器中设置适配器spinner.setAdapter(dataAdapter);//事件spinnerOne.setOnItemSelectedListener(this);spinner.setOnItemSelectedListener(this);}@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int position, long id) {if(parent.getId() == R.id.tbnSpiOne){Toast.makeText(this,"您选择了"+parent.getItemAtPosition(position),Toast.LENGTH_SHORT).show();} else if (parent.getId() == R.id.tbnSpi) {TextView textView = findViewById(R.id.btnTitle);Toast.makeText(this,"您选择了"+textView.getText().toString(),Toast.LENGTH_SHORT).show();}}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="请选择头像:"android:textSize="16sp"/><!-- 下拉列表entries :数据源android:dropDownHorizontalOffset:设置列表框的水平偏移距离android:dropDownVerticalOffset:设置列表框的水平竖直距离android:dropDownSelector:列表框被选中时的背景android:dropDownWidth:设置下拉列表框的宽度android:gravity:设置里面组件的对其方式android:popupBackground:设置列表框的背景android:prompt:设置对话框模式的列表框的提示信息(标题),只能够引用string.xml中的资源 id,而不能直接写字符串android:spinnerMode:列表框的模式,有两个可选值: dialog:对话框风格的窗口dropdown: 下拉菜单风格的窗口(默认) 可选属性:android:entries:使用数组资源设置下拉列表框的列表项目
--><Spinnerandroid:id="@+id/tbnSpiOne"android:prompt="@string/title"android:entries="@array/data"android:layout_width="wrap_content"android:layout_height="wrap_content"android:dropDownWidth="100dp"android:spinnerMode="dialog"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="请选择头像:"android:textColor="#ff00ff"android:textSize="16sp"/>--><Spinnerandroid:id="@+id/tbnSpi"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>

spinner_view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><!-- 图片--><ImageViewandroid:id="@+id/bntImg"android:layout_width="64dp"android:layout_height="64dp"/><!--文字 --><TextViewandroid:id="@+id/btnTitle"android:layout_width="match_parent"android:layout_height="64dp"android:text="样式1"android:textSize="24sp"android:gravity="center_vertical"/></LinearLayout>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/209843.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年亚太数学建模C题数据分享+详细思路

在报名截止的前一天&#xff0c;我尝试进行了报名。到那时&#xff0c;已有11,000个队伍注册参赛。在我的了解中&#xff0c;在数模比赛中除了国赛美赛外&#xff0c;几乎没有其他竞赛的参赛队伍数量能与此相媲美。即便不考虑赛题的难度和认可度&#xff0c;亚太地区的这场竞赛…

IDEA中注释快捷键及模板

单行注释 将光标放置于要注释所在行&#xff0c;使用 Ctrl /&#xff0c; 添加行注释&#xff0c;再次使用&#xff0c;去掉行注释 若需要将多行进行单行注释&#xff0c;只需要选中要注释的多行&#xff0c;然后使用 Ctrl /&#xff0c; 添加行注释&#xff0c;再次使用&a…

机器学习/sklearn 笔记:K-means,kmeans++,MiniBatchKMeans

1 K-means介绍 1.0 方法介绍 KMeans算法通过尝试将样本分成n个方差相等的组来聚类&#xff0c;该算法要求指定群集的数量。它适用于大量样本&#xff0c;并已在许多不同领域的广泛应用领域中使用。KMeans算法将一组样本分成不相交的簇&#xff0c;每个簇由簇中样本的平均值描…

03梯度下降

目录 lambda基础知识 代码 核心算法&#xff1a; lambda基础知识 lambda 是 Python 中的一个关键字&#xff0c;用于创建匿名函数。匿名函数是一种没有具体名称的小型、临时的函数&#xff0c;通常用于一次性的、简单的操作。lambda 函数的语法如下&#xff1a;python Copy c…

专注短视频账号矩阵系统源头开发---saas工具

专注短视频账号矩阵系统源头开发---saas营销化工具&#xff0c;目前我们作为一家纯技术开发团队目前已经专注打磨开发这套系统企业版/线下版两个版本的saas营销拓客工具已经3年了&#xff0c;本套系统逻辑主要是从ai智能批量剪辑、账号矩阵全托管发布、私信触单收录、文案ai智能…

Web前端—移动Web第五天(媒体查询、Bootstrap、综合案例-alloyTeam)

版本说明 当前版本号[20231122]。 版本修改说明20231122初版 目录 文章目录 版本说明目录移动 Web 第五天01-媒体查询基本写法书写顺序案例-左侧隐藏媒体查询-完整写法关键词 / 逻辑操作符媒体类型媒体特性 媒体查询-外部CSS 02-Bootstrap简介使用步骤下载使用 栅格系统全局…

Android WorldWind加载shapefile格式文件形成三维效果

目录 1 前言2 实现思路3 绘制Polygons4 读取shapefile文件5 加载立体模型6 问题1 前言 在项目中有时会加载shapefile格式的数据,要形成三维立体效果。但是查看worldwind NASA官网,在worldwind android的使用教程中并没用加载shapefile格式的教程,然后源码中也没有开发加载s…

数据库基础入门 — SQL运算符

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

深入浅出理解libevent——2万字总结

概述 libevent,libev,libuv都是c实现的异步事件库&#xff0c;注册异步事件&#xff0c;检测异步事件&#xff0c;根据事件的触发先后顺序&#xff0c;调用相对应回调函数处理事件。处理的事件包括&#xff1a;网络 io 事件、定时事件以及信号事件。这三个事件驱动着服务器的运…

Py之arxiv:arxiv的简介、安装、使用方法之详细攻略

Py之arxiv&#xff1a;arxiv的简介、安装、使用方法之详细攻略 目录 arxiv的简介 arxiv的安装 arxiv的使用方法 1、对arXiv数据库的文章搜索和获取 arxiv的简介 arXiv是由康奈尔大学图书馆推出的项目&#xff0c;为物理学、数学、计算机科学、数量生物学、数量金融和统计学…

el-table表格排序(需要后端判别),el-table导出功能(向后端发送请求)

&#xff08;1&#xff09;表格排序 &#xff08;2&#xff09;简单的table导出功能&#xff08;需要后台支撑&#xff09;必须要有iframe &#xff08;3&#xff09;页面所有代码&#xff1a; <template><div class"mainContainer"><el-form:model&…

【STM32外设系列】GPS定位模块(ATGM336H)

&#x1f380; 文章作者&#xff1a;二土电子 &#x1f338; 关注公众号获取更多资料&#xff01; &#x1f438; 期待大家一起学习交流&#xff01; 文章目录 一、GPS模块简介二、使用方法2.1 引脚介绍2.2 数据帧介绍2.3 关于不同的启动方式 三、前置知识3.1 strstr函数3.2…