我在android中有一个微调器下拉列表,其中填充了名称列表作为文本,ID作为值。现在问题是我有一个文本框,其中用户输入字符串和按钮点击项目,名称像文本框字符串应自动选中。我在谷歌搜索,但找不到任何有用的东西。我用了
drpMaterial.setSelection(p);
但它适用于索引,我正在寻找可以在文本上工作而不是在spinnner下拉列表中的值的东西。
我填充微调器下拉列表的代码:
Itm=new CItem( "-1", "Select Material" );
lstItm.add(Itm);
for(int i=0; i < lengthJsonArr; i++) {
jsonmain = j.getJSONObject(i);
Itm=new CItem(jsonmain.getString("ID"),jsonmain.getString("Text"));
lstItm.add(Itm);
}
if(lstItm.size()>0) {
ArrayAdapter<CItem> adapterProj = new ArrayAdapter<CItem>(myactivity, android.R.layout.simple_spinner_item, lstItm);
drpProj.setAdapter(adapterProj);
}
答案 0 :(得分:2)
您可以通过添加该库来实现
将此添加到您的build.gradle文件
dependencies {
...
compile 'com.toptoche.searchablespinner:searchablespinnerlibrary:1.3.1'
}
您现在可以在您的layout.xml文件中添加以下行:
<com.toptoche.searchablespinnerlibrary.SearchableSpinner
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
将此添加到您的活动中,您就可以开始了!
searchableSpinner.setTitle("Select Item");
searchableSpinner.setPositiveButton("OK");
查看下面的链接以获取更多信息
答案 1 :(得分:0)
如果您需要从资源中选择值,请尝试使用此代码。
String compareValue= "some value";
ArrayAdapter<CharSequence> adapter= ArrayAdapter.createFromResource(this, R.array.select_state, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
MySpinner.setAdapter(adapter);
if (!compareValue.equals(null))
{
int spinnerPostion = adapter.getPosition(compareValue);
MySpinner.setSelection(spinnerPostion);
spinnerPostion = 0;
}
对于自定义适配器,例如CursorAdapter
,您必须编写(覆盖)getPosition()的代码
来源:How to set selected item of Spinner by value, not by position?