如何在android spinner下拉列表中搜索

时间:2015-05-16 10:01:13

标签: java android android-spinner

我在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);
         }

2 个答案:

答案 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");

查看下面的链接以获取更多信息

https://github.com/miteshpithadiya/SearchableSpinner

答案 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?