android中listpreference取值的问题

问题描述

android中listpreference取值的问题

程序中有一个listpreference。无论我如何运行代码,都有错误。现在我把方法贴上:

string-array name="listArray"
items: Mercedes, Audi, Porsche

string-array name="listValues"
items: car1, car2, car3

在listpreference部分的preferences.xml中有以下的代码:

<ListPreference
          android:title="List Preference"
          android:summary="This preference allows to select an item in a array"
          android:key="listPref"
          android:defaultValue="digiGreen"
          android:entries="@array/listArray"
          android:entryValues="@array/listValues" />

我要下面的代码获取选中的项:

String listpref = preferences.getString("listPref", "n/a");
   Toast.makeText(TutorialPref.this, "Chosen item of ListPref:" + listpref, Toast.LENGTH_LONG).show();

可问题是只返回值而不是选项。也就是说如果我选择"Mercedes",获得的值是 "car1".
如何才能获得"Mercedes"呢?

解决方案

你可以创建一个map,把array values作为keys,把array entries作为values。

private Map<String,String> cars = new HashMap<String, String>();

 if (cars.isEmpty()) {
    String[] carNames = getResources().getStringArray(R.array.listArray);
    String[] carIds = getResources().getStringArray(R.array.listValues);
    for (int i = 0; i <  carIds.length; i++) {
    cars.put(carIds[i], carNames[i]);
    }
 }

在toast中,用cars.get(listpref)检索车名。

解决方案二:

拿到ListPreference的实例,调用下面的方法,会返回一个数组,根据选择的位置匹配下应该可以得到你想要的

public CharSequence[] getEntries() {
return mEntries;
}

解决方案三:

你只需要把同样的数组放在entryValues,就像在entries中一样

android:entryValues="@array/listArray"
时间: 2024-07-31 03:25:03

android中listpreference取值的问题的相关文章

java-Java Hibernate中查询取值

问题描述 Java Hibernate中查询取值 Sql语法是这样的:![图片说明] 用Hibernate查询的语法不知道有没有问题呢? 还有最后一个问题: 我查询后的值存在query里面了, 我又要怎么取值呢? 求大家帮帮忙 解决方案 你那ID写里面就是死值了,要么用"?"代替,要么用 "+ +" 抱起来,哪有你那么写的 解决方案二: query.list()吧,然后看返回值是什么类型就用什么类型去接收就OK了.推荐看看这个先,里面有你想要的内容:http://z

json-查询Android中存在的值

问题描述 查询Android中存在的值 应该怎么查询Android Json中已经存在的值? { "contacts": [ { "id": "c200", "name": "Michael Jordan", "email": "mj@gmail.com", "address": "xx-xx-xxxx,x - street, x - c

javascript-js中数组取值的问题,点不出split的方法,有没有其他办法

问题描述 js中数组取值的问题,点不出split的方法,有没有其他办法 js中定义了一个变量var str = 500369583,2,25,13,1002460,38537657,1100159 然后我把它转成数组 var list = [],list.push(str),但是list里面只有一个元素list[0],而且list[0]=500369583,2,25,13,1002460,38537657,1100159,请问我怎样才能把这些值分开取出来,顺便说一句这里面没有.split的方法啊

javaweb-在service中如何取值?

问题描述 在service中如何取值? 在action层中, Users loginUser = (Users) request.getSession().getAttribute("loginuser"); loginUser.getId();得到用户的Id值. 但在service层中,如何取到这个值呢? 解决方案 action层通过调用serivce层,作为参数可以传进去.

关于在java中map取值问题

问题描述 关于在java中map取值问题 Map,其中object为ArrayList,如何取值 解决方案 ArrayList al = (ArrayList)ordersMap.get("rows"); 解决方案二: 谢谢各位的回答,跟一楼说的一样,我已经把值取出来了 解决方案三: 一楼正解,强制转型即可. 解决方案四: map以key.value形式存在,你直接通过key获取value就可以了

struts2中页面取值的原理以及valueStack的应用

  一个简单的用struts2标签代码获取action中属性的例子   <table border="1" width="360">    <caption>     作者李刚的图书    </caption>    <!-- 迭代输出ValueStack中的books对象,其中status是迭代的序号 -->    <s:iterator value="books" status="

groovy中map取值问题

问题描述 我输出map得到的是[enterprisecode:xx, usercode:xx, username:xx, password:xx, defaultgroupid:xx, phonenumber:null, languagecode:CN, erpenterprisecode:null, erpusercode:null, year:2010, month:201012, today:2010/12/06]但我用map.get("languagecode") 和 map.

关于C#中memcached取值的问题

问题描述 1.问题描述我在本机上安装了memcached服务,然后在java中setget数据都是正常的,然后在C#下setget也是正常的,现在问题来了C#set后的数据,java中是可以正常获取的,但是javaset后的数据,C#调用keymemcached.KeyExists(key)这个方法时候,也是为true的,但是get(key)的时候,为null,大家分析下这事什么情况? 解决方案 解决方案二:估计是类型转换失败导致的解决方案三:引用1楼shingoscar的回复: 估计是类型转换

C# winFrom 中TreeView取值

问题描述 C#winFrom中,点击Button按钮,把左边TreeView(带Checkbox)选中的节点的值传到右边的TreeVieww给个示例源码,本人菜鸟啊 解决方案 解决方案二:上面这篇文字有遍历方法,你判断每个node是否选中,然后添加到右侧解决方案三:能不能给个示例代码,那个看不懂解决方案四:stringstringValue=string.Empty;privatevoidbtnSend_Click(objectsender,EventArgse){stringValue=str