位置: 编程技术 - 正文

Spinner类控件的使用(下拉列表的使用)(控件begininvoke)

编辑:rootadmin

推荐整理分享Spinner类控件的使用(下拉列表的使用)(控件begininvoke),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:所有控件类都是什么类的派生类,spread 控件,spinbutton控件属性,spinner控件属性,所有控件类都是什么类的派生类,spinbutton控件属性,所有控件类都是什么类的派生类,所有控件类都是什么类的派生类,内容如对您有帮助,希望把文章链接给更多的朋友!

Spinner位于android.widget包下,它每次只显示用户选中的元素,当用户再次单击时,会弹出选择列表供用户选择,而选择列表中的元素同样来自适配器(Adapter),如图所示为该类的继承树,我们可以看出,Spinner类仍然为View的一个子类。

下面将通过一个选择爱好的案例来介绍Spinner类控件的使用方法,需要注意的是,Android中的下拉列表并不像其他系统那样直接下拉来显示选项,而是相当于一个弹出菜单供用户选择的。

(1)新建Android项目,项目名称为Samples_5_1.

(2)将兴趣爱好的图片资源存放到res/drawable-mdpi文件夹下。如下图所示:

(3)添加字符串资源,修改res/values目录下得strings.xml文件,添加如下选项。

<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">Samples_5_1</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string><!--定义ys字符串--><string name="ys">您的爱好</string><!--定义lq字符串--><string name="lq">篮 球</string><!--定义zq字符串--><string name="zq">足 球</string><!--定义pq字符串--><string name="pq">排 球</string></resources>

(4)添加颜色资源,在res/values目录下创建color.xml文件。

<?xml version="1.0" encoding="utf-8"?><resources> <!--定义red颜色--> <color name="red">#FF</color> <!--定义green颜色--> <color name="green">#FB</color> <!--定义blue颜色--> <color name="blue">#B2EE</color> <!--定义white颜色--> <color name="white">#FCFCFC</color> <!--定义black颜色--> <color name="black">#1A1A1A</color></resources>

(5)修改布局文件,修改activity_main.xml文件。

<?xml version="1.0" encoding="UTF-8"?><LinearLayoutxmlns:android=" android:id="@&#;id/TextView"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textSize="dip"/><!--添加一个下拉列表控件--><Spinnerandroid:id="@&#;id/Spinner"android:layout_width="fill_parent"android:layout_height="wrap_content"/></LinearLayout>

(6)下面是主要逻辑代码,打开Samples_5_1.java

package com.example.samples_5_1;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.Spinner;import android.widget.BaseAdapter;import android.view.View;import android.view.ViewGroup;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.ImageView;import android.widget.AdapterView;public class MainActivity extends Activity {final static int WRAP_CONTENT=-2; //WRAP_CONTENT常量//所有资源图片(足球。篮球、排球)id的数据int [ ] drawableIds=new int[]{R.drawable.f,R.drawable.b,R.drawable.v};//所有资源字符串(足球、篮球、排球)id的数组int [ ] msgIds=new int[]{R.string.zq,R.string.lq,R.string.pq}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化Spinner Spinner sp=(Spinner)this.findViewById(R.id.Spinner); BaseAdapter ba=new BaseAdapter() { @Override //为Spinner准备内容适配器 public int getCount() { return 3; } //重写getItem方法 @Override public Object getItem(int arg0) { return null; } @Override public long getItemId(int arg0) { return 0; } @Override public View getView(int arg0,View arg1,ViewGroup arg2) { /** * 动态生成每个下拉项对应的View,每个下拉项View由LinearLayout * 中包含一个ImageView及一个TextView构成 */ //初始化LinearLayout LinearLayout ll=new LinearLayout(MainActivity.this); //设置朝向 ll.setOrientation(LinearLayout.HORIZONTAL); //初始化ImageView ImageView ii=new ImageView(MainActivity.this); //设置内容 ii.setImageDrawable(MainActivity.this.getResources().getDrawable(drawableIds[arg0])); //添加到LinearLayout中 ll.addView(ii); //初始化TextView TextView tv=new TextView(MainActivity.this); //设置内容 tv.setText(MainActivity.this.getResources().getText(msgIds[arg0])); //设置字体大小 tv.setTextSize(); //设置字体颜色 tv.setTextColor(MainActivity.this.getResources().getColor(R.color.black)); //将LinearLayout返回 ll.addView(tv); return ll; } }; //为Spinner设置内容适配器 sp.setAdapter(ba); //设置选项选中的监听器 sp.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0,View arg1,int arg2,long arg3) { //获取主界面TextView TextView tv=(TextView)MainActivity.this.findViewById(R.id.TextView); //获取当前选中的LinearLayout LinearLayout ll=(LinearLayout)arg1; //获取其中的TextView TextView tvn=(TextView)ll.getChildAt(1); //用StringBuilder动态生成信息 StringBuilder sb=new StringBuilder(); sb.append(MainActivity.this.getResources().getText(R.string.ys)); sb.append(":"); sb.append(tvn.getText()); tv.setText(sb.toString()); } //重写onNothingSelected方法 public void onNothingSelected(AdapterView<?> arg0) { }}); }

(7)运行效果如下图所示:

(8)对主要逻辑代码进行简单解释一下。

a.代码中使用了BaseAdapter适配器提供数据,关于BaseAdapter适配器的详细介绍在我的博客中有详细介绍,这里简单介绍一下。下图为BaseAdapter类的构造:

从编译的类可以看出BaseAdapter实现了android.widget.ListAdapter和android.widget.SpinnerAdapter接口。既然实现了这两个需要实现接口中的方法。下面再来看android.widget.ListAdapter接口和android.widget.SpinnerAdapter接口。

android.widget.ListAdapter接口

android.widget.SpinnerAdapter接口

从这两个接口的编译类中可以看出他们都继承自android.widget.Adapter类,那么该类又有哪些方法需要实现呢,看了下图就知道了。

因为BaseAdapter已经是抽象类了,在该类中已经实现了接口中所有方法,只需要重写实现Spinner数据红色标注的四个方法,这些方法都是继承过来。下面主要介绍一下getView方法,因为getView是数据适配器具体实现的方法。

getView类的定义

getView类的参数及返回&#;

Spinner类控件的使用(下拉列表的使用)(控件begininvoke)

b.代码中还使用到了setOnItemSelectedListener方法用于对Spinner选项的监听。

下面来看下实现监听功能的类OnItemSelectedListener类。

setOnItemSelectedListener方法是Spinner类继承过来的方法。

1.Spinner继承自 android.widget.AbsSpinner类

2.AbsSpinner继承自 android.widget.AdapterView<android.widget.SpinnerAdapter>类

3.可以看出setOnItemSelectedListener是 android.widget.AdapterView<T extends android.widget.Adapter>抽象类的方法。红色标示的即setOnItemSelectedListener方法。而监听的类是android.widget.AdapterView$OnItemSelectedListener类。下面来看下这个类的接口方法以便Spinner类实现该接口中的方法。

4.从下图可以看出,Spinner类需要重写 onItemSelected和onNothingSelected这两个方法

至此所有的功能介绍也已经完成,学习Java时一定要从面向对象的角度去考察功能的实现,这样就很清楚哪些功能需要实现哪些方法。

First class: UI design for Android RelativeLayoutxmlns:android=

First Class: UI of Android LinearLayoutxmlns:android=

ubuntu如何完全卸载和安装 Java及android环境 原文链接:

标签: 控件begininvoke

本文链接地址:https://www.jiuchutong.com/biancheng/387403.html 转载请保留说明!

上一篇:Android中万能的BaseAdapter的使用(安卓万能插件)

下一篇:First class: UI design for Android

  • 报废汽车残值收入
  • 小规模纳税人应交税费的二级科目
  • 水资源费如何入账
  • 本月无销售额,但是有进项,需要认证吗
  • 通过法院拍卖取得的设备怎么开具发票
  • 公司承担社保能放到生产成本里吗
  • 固定资产清理时残值怎么处理
  • 损失补偿原则的限制条件有
  • 分期收款销售货物 收入确认
  • 增值税进项税额不予抵扣的项目包括
  • 供货方提供安装材料
  • 增值税是购货方交还是销货方交
  • 领用自产应税消费品负担的消费税计入在建工程成本吗
  • 事业编制公考
  • 研究费加计扣除多少
  • 接受投资转入的货物
  • 印花税这个月没交下个月补报可以吗?
  • 注销企业时所有权怎么办
  • 公司员工体检计入什么科目
  • 营改增后房屋出租税率
  • 节假日加班工资是平时的几倍?
  • 软件项目成本包括直接成本和间接成本,一般而言
  • 什么人可以领购房补贴怎么领取
  • 购入低值易耗品计入什么科目
  • 农产品进项税抵扣计算例题
  • 全年平均职工人数按季度平均公式
  • 金三接口调用失败怎么办?
  • 一般户转钱到基本户
  • 1697510703
  • 经销商计提折扣怎么做账
  • 广告费和业务宣传费15%还是30%
  • 排污费计入应交税费吗
  • 委托代销委托方的账务处理
  • 增值税的计税依据包括契税吗
  • 房产税具体内容
  • 注册资本增加了
  • 触屏不灵敏怎么调整oppo
  • 南极岛在哪
  • 日落之前是什么时辰
  • 流动资产处置利得
  • vue3 ref dom
  • 如何设置长期有效的群二维码安卓手机
  • 退还多缴纳税款
  • 期货收入交个人所得税吗
  • 个税汇算清缴时劳务报酬怎么计税
  • 织梦设置的关键词看不到
  • 企业合并属于非企业吗
  • 会员退费会计分录
  • 金蝶kis固定资产反结账
  • 小规模纳税人运输费计入什么科目
  • 收到去年的普通发票
  • 一般纳税人注销公司麻烦吗
  • 租赁公司异地经营
  • 成本发票未到如何结转成本
  • 债券溢价摊销有什么影响
  • 财政补助收入的支付制度包括
  • 工程进度开票如何入账
  • 营业外支出可以抵扣进项税吗
  • 主营业务成本与其他业务成本的区别
  • ubuntu搜索已安装软件
  • linux解释
  • page文档的排版技巧
  • xp 关机
  • windows组策略a-g-dl-p
  • 没有了开始菜单怎么恢复
  • tab栏切换案例
  • 安卓软件集
  • javaScript事件机制兼容【详细整理】
  • python开发技术详解(全27集),5
  • socketio nodejs
  • python利用while循环求1+2+3......+n的和
  • 如何给textarea赋值
  • node解决了什么问题
  • js 类继承
  • 百旺怎么导出数据
  • 河南普通发票查询真伪查询系统
  • 江苏电子税务局电话
  • 个人所得税怎么申报
  • 福建省顺昌县人口有多少
  • 云南4050人员2020最新政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设