我想通过name.name获取联系人号码存储在微调器中如果我选择存储在一个spinner.plz中的任何名称检查我的方法如何按名称获取数字 .
public void onItemSelected(AdapterView arg0,View arg1,int arg2,long arg3){
String[] name=new String[]{arg0.getItemAtPosition(arg2).toString()};
//name=arg0.getItemAtPosition(arg2).toString();
String[] projection=new String[]{People.NUMBER};
//String[] selectionarg=new String[]{People.NAME};
Cursor cur=getContentResolver().query(People.CONTENT_URI, projection,People.NAME+"=?" ,name, null);
String result=cur.getString(cur.getColumnIndex(People.NUMBER));
Toast.makeText(getApplicationContext(), "number is:-"+result, Toast.LENGTH_SHORT).show();
}
2 回答
检查这段代码希望你明白这个想法
有一个备用解决方案,您可以在第一个查询中获取所需的所有数据 - 显示值和选择该项目时使用的相关数据值(此处为数字和名称) .
如果将两个字段存储在一个对象中并将该类型的实例绑定到一个支持微调器的ArrayAdapter,则可以在选择一个项目时轻松查找与该名称对应的数字 and 在选择时避免额外的数据库调用(这将是简化您的代码,特别是如果您正确地将DB访问放在后台线程上) .
如果使用标准的ArrayAdapter,诀窍是使该配对值对象的
#toString()
方法返回的值返回显示给用户的所需值,该值将用于Spinner显示文本的内容 .样品对类:
在微调器上设置ArrayAdapter实例并在侦听器中查找匹配的字符串: