如何在Spinner上提供搜索选项?

时间:2015-06-11 06:29:26

标签: android listview android-edittext spinner autocompletetextview

基本上我需要用搜索选项建立一个微调器。真的找不到类似的东西。但是得到了一些想法。就像它可以通过以下过程完成:

  1. 使用自动填充TextView:问题是当我点击它时我无法真正加载列表。它在我开始输入时显示一个列表。

  2. 使用editTextView下方的下拉列表视图。因此,当我点击editText时,它将作为下拉列表,当我开始输入时,项目将仅显示在列表视图中。

    这里的问题是我无法真正实现它。请帮我解决这个问题。

  3. 使用一个微调器 - 它将像EditTextView一样,以便我可以输入。

    我需要有关如何输入/放置editTextView的帮助。旋转器的顶部。

  4. 请帮帮我。

    或者,如果有任何更好的建议,请说出来。

2 个答案:

答案 0 :(得分:2)

有适用于Android的可搜索微调器库,可能对您有用。

Searchable Spinner是一个带有搜索功能的对话框微调器,可以搜索微调器中加载的项目。

此库需要很少的代码更改,您只需要使用库的标记替换布局xml中的Spinner标记。

PFB链接了解更多详情SearchableSpinner

答案 1 :(得分:0)

我正在使用过滤,而不是自动完成..流程将是,您必须填充您拥有的Arraylist并将其显示为普通列表。 Filtering thingy将在EditText中实现。这是我的一些代码:

1st:声明你的EditText和RelativeLayout,其中将绘制结果:

 etClinicName = (EditText)findViewById(R.id.etClinicName);      
    btnSearch = (Button) findViewById(R.id.btnSearch);
    rlayoutResult = (RelativeLayout) findViewById(R.id.relativelayout_result);

第二:在你的OnCreate里面,把这个代码:

    etClinicName.addTextChangedListener(new TextWatcher()
    {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int     arg3) 
        {
            // When user changed the Text
    SearchByNameFragmentActivity.this.arrayAdapter.getFilter().filter(cs);  
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) 
{
            // TODO Auto-generated method stub
        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

这是我的XML布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_theme"
android:orientation="vertical" >

  <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="41dp"
                android:layout_margin="20dp"
                android:orientation="horizontal"
                android:background="@drawable/shadow" >

                <EditText
                    android:id="@+id/etClinicName"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:hint="@string/hintSearchbranch"
                    android:inputType="textPersonName"
                    android:textSize="13sp"
                    android:background="@drawable/shadow"
                    android:paddingLeft="1dp"
                    android:gravity="center_vertical" />



            </LinearLayout>




            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                >

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_margin="10dp">

                <ListView
                    android:id="@+id/lvlClinicList"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent" />



            </LinearLayout>
            </RelativeLayout>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/newline" />

           <RelativeLayout
                android:id="@+id/relativelayout_result"
                android:layout_width="wrap_content"
                android:layout_height="10dp"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginBottom="10dp" >



                                <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                >

                <Button
                    android:id="@+id/btnSearch"
                    android:layout_width="42dp"
                    android:layout_height="wrap_content"
                    android:background="@drawable/ic_action_search_black"
                    android:padding="15dp" />

                </LinearLayout>
            </RelativeLayout>


        </LinearLayout>

    </RelativeLayout>


</LinearLayout>

随意询问如果您仍然感到困惑,希望它有助于:D