[Android]为Spinner填充数据后设置默认值的问题

前言

   为Spinner适配完数据后需要设置其默认选项,但是发现直接setSelection(int position)有时候不管用,打开选项又发现已经选中了,但是显示出来的选项又始终默认第一个,本文为文章1的中文简单译本。

 

文章

  1.  Using spinner.setSelection & finding the spinner doesn't show the selected item when closed?

 

声明

  欢迎转载,但请保留文章原始出处:) 

    博客园:http://www.cnblogs.com

    农民伯伯: http://www.cnblogs.com/over140/

 

正文

  问题很奇怪,此外还发现适配完数据后会默认选中第一个,并且这个默认选中第一个的操作并不是马上执行的,而是一段时候后再执行,并触发OnItemSelectedListener事件。下面直奔主题:

  旧代码:

        spinner.setAdapter(adapter);
        spinner.setSelection(2); 

  新代码:

        spinner.setAdapter(adapter);
        spinner.setSelection(2,true);

  在来看setSelection有两个参数的函数重载的说明:

setSelection(int position, boolean animate)

  英文:Jump directly to a specific item in the adapter data.

  中文:直接跳到数据适配器中指定项。

 

  以下是两个函数的源代码:

    /**
     * Jump directly to a specific item in the adapter data.
     */
    public void setSelection(int position, boolean animate) {
        // Animate only if requested position is already on screen somewhere
        boolean shouldAnimate = animate && mFirstPosition <= position &&
                position <= mFirstPosition + getChildCount() - 1;
        setSelectionInt(position, shouldAnimate);
    }
    

    @Override
    public void setSelection(int position) {
        setNextSelectedPositionInt(position);
        requestLayout();
        invalidate();
    }

 

结束

  看起来像是专门准备了一个函数在数据适配(填充)完后设置默认值的,可惜API文档还没有翻译到这里,不然少走这个弯路了 :)

转载:http://www.cnblogs.com/over140/archive/2010/09/25/1834469.html

时间: 2024-11-03 00:46:06

[Android]为Spinner填充数据后设置默认值的问题的相关文章

java-在 spinner 中设置默认值

问题描述 在 spinner 中设置默认值 使用的 spinner 的代码 private String `DEFAULT_CURRENCY_TYPE`; ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, currenciesDataSource.keys); adapter.setDropDownViewRe

easyui-easyUI中的checkbox的默认选中问题,如何通过后台数据来设置默认选中?

问题描述 easyUI中的checkbox的默认选中问题,如何通过后台数据来设置默认选中? 通过后台的方法查询到了应该被选中的数据,并且形成一个数组,将这个数组返回到前台,前台的checkbox如何根据这个数组的数据来设置默认选中呢 解决方案 easyui combogrid设置默认选中项easyUI-Datagrid设置checkbox时默认选中 解决方案二: checkbox 设置是时候,给id ,id的规则和你要传过来的数据定义方式一样,这样,传过来的数据就能对应的找到checkbox了,

赋值-c# 后台给select下拉框设置默认值

问题描述 c# 后台给select下拉框设置默认值 点击编辑时 要给下拉框赋值,在后台拿到对应的值后怎么给下拉框赋值.控件.属性=值: 请问是哪个属性.谢谢 解决方案 select是客户端的?还是服务器端的asp:DropDownList 客户端的直接 document.getElementById('selid').value='<%=cs后台文件中一个protected全局变量%>' 服务器的用ddl.SelectedValue=xxxx 解决方案二: 到底要默认值还是要赋值啊. 你说的是

easyui,combobox设置默认值联动问题.

问题描述 easyui,combobox设置默认值联动问题. 图中,款项类型和款项名称是一组联动下拉框.就像省市区那样的联动.现在我款项类型的数据源有两个字段(Code和TypeName).但是我的valueFild和textFild都存的TypeName(因为我数据库中只有TypeName一个字段).我试过先绑定款项类型下拉数据源,然后互再用select函数选中,但是无法选中数据(数据源和待选中值都是存在的!),求高人指点!!! 解决方案 我的问题前提是:某种条件下,款项类型和款项名称都要设置

sql server-SQLSERVER能为存储过程设置默认值吗?

问题描述 SQLSERVER能为存储过程设置默认值吗? 现在的情况是这样 针对服务器旧版和新版 某一个存储过程中,旧版的输入参数只有3个,而新版的输入参数有5个. 我希望在执行该存储过程的时间,若输入参数只有三个(后面两个输入参数缺失)时, 该存储过程自动为后面两个缺失值的输入参数赋一个默认值. 请问可以只修改存储过程达到这目的的? 用的SQLSERVER是2005版的 解决方案 例子: create procedure pro_Name( @cNo varchar(8), @cName var

html-如何使用jQuery给HTML中select标签设置默认值?

问题描述 如何使用jQuery给HTML中select标签设置默认值? 页面里有这么一个标签: <select id="user-sex" data-toggle="select" class="form-control select select-primary select-lg"> <option value="0">Secret</option> <option value=&

jquery-easyui点击添加,弹出个dialog,需要在dialog中的某一个标签设置默认值,请问解决办法~

问题描述 easyui点击添加,弹出个dialog,需要在dialog中的某一个标签设置默认值,请问解决办法~ 如题,请问如何实现.我添加的时候也没有单击一条数据的需求.请问如何实现该功能? 解决方案 给标签设置默认值跟easyui有关系么?你的标签是什么,text?select?a?dorpdown?

MySql折腾小记二:text/blog类型不允许设置默认值,不允许存在两个CURRENT_TIMESTAMP

在 CYQ.Data 数据框架的反向工程中,遇到MySQL的问题又2个,记录下先.   1:对于时间的默认值,为:CURRENT_TIMESTAMP,不允许一个表存在两个日期都设置了:CURRENT_TIMESTAMP 解决的办法: 按理只设一个. 但在反向工程中,若遇到两个或以上的设置,为保证导数据的正常,直接取消日期的默认值.   2:text/blog类型不允许设置默认值,由于其它数据库类型是可以有默认值,所以转过来一般也会设置默认值,不过默认状态下不允许设置默认值. 解决的方法: 修改m

MySQL表字段设置默认值

环境 MySQL 5.1 + 命令行工具 问题 MySQL表字段设置默认值 解决 --SQL: CREATE TABLE test( i_a int NOT NULL DEFAULT 1, ts_b timestamp NOT NULL DEFAULT NOW(), c_c char(2) NOT NULL DEFAULT '1' ); --以下SQL不合法 --time_d time NOT NULL DEFAULT CURTIME(), --date_e date NOT NULL DEFA