【问题标题】:How to search in android spinner dropdown如何在 android spinner 下拉菜单中搜索
【发布时间】:2015-07-28 05:58:08
【问题描述】:

我在 android 中有一个微调器下拉列表,其中填充了作为文本的名称列表和作为值的 ID。现在的问题是我有一个文本框,其中用户输入字符串和按钮单击项目,名称如文本框字符串应该被自动选择。我在谷歌上搜索,但找不到任何有用的东西。我用过

 drpMaterial.setSelection(p);

但它适用于索引,我正在寻找适用于文本而不是微调器下拉列表中的值的东西。

我用于填充微调器下拉列表的代码:

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

【问题讨论】:

    标签: java android android-spinner


    【解决方案1】:

    你可以通过添加这个库来实现这一点

    将此添加到您的 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

    【讨论】:

      【解决方案2】:

      如果您需要从资源中按值选择,请尝试使用此代码。

       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?

      【讨论】:

      • 它只有在项目被提供给 getpostion 方法()的值和文本时才有效,但我只想通过文本搜索下拉列表而不考虑它的值部分。@Anil 实际上我正在通过 arraylist 填充下拉列表包含文本和值部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多