Android AutoCompleteTextView结果列表而不是默认下拉列表

时间:2016-05-06 11:13:34

标签: android listview android-arrayadapter autocompletetextview

Android AutoCompleteTextView搜索并在List中返回结果,而不是默认下拉列表。

有没有办法可以重新设计并将AutoCompleteTextView的结果放入除默认列表设计之外的列表中?

在我的MainActivity中,我有这个:

    String[]fruits = {"apple", "avocado", "banana", "blackberry", "blueberry", "coconut", "durian", "mango", "melon"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ArrayAdapter<String> stringArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item, fruits);

    AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autocom);
    autoCompleteTextView.setAdapter(stringArrayAdapter);
    autoCompleteTextView.setTextColor(Color.RED);

    ListView lv = (ListView) findViewById(R.id.lv);
    lv.setAdapter(stringArrayAdapter);

}

在我的xml中,

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.android.autocompletenativesample.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="15dp"
        android:text="Pick a Fruit"
        android:id="@+id/tv"
        />
    <AutoCompleteTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:id="@+id/autocom"
        android:layout_below="@+id/tv"
        android:layout_marginLeft="36dp"
        android:layout_marginTop="17dp"
        android:completionThreshold="1"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ListView Implementation"
        android:layout_below="@+id/autocom"
        android:id="@+id/tv2"
        />
    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/lv"
        android:layout_below="@+id/tv2"
        >

    </ListView>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="RecyclerView Implementation"
        android:layout_below="@+id/lv"
        />
</RelativeLayout>

此外,这是一个Visual Explanation。它将在AutoCompleteTextView字段中搜索,但结果将不会显示在下面而是显示在另一个布局上。

我是否应该编辑ArrayAdapter更改布局,或者使用实现AutoCompleteTextView的CustomAutoCompleteTextView或实现AutoCompleteTextView的EditText。

我希望将AutoCompleteTextView的结果格式化为这样。 RecyclerView and CardView Result design

感谢。

1 个答案:

答案 0 :(得分:0)

我可以给你逻辑。看看这个链接。 http://www.androidhive.info/2012/09/android-adding-search-functionality-to-listview/这也是http://www.tutorialsbuzz.com/2014/08/android-filters-for-simple-listview.html

并且过滤器在适配器中完成,因此首先使用空适配器绑定listview,并在textWatcher bindlistview中使用数据源过滤并通知更改。