Android之AutoCompleteTextView自动匹配RecycleView

Android之AutoCompleteTextView自动匹配RecycleView

XML布局文件中:

<AutoCompleteTextView
    android:id="@+id/search_bar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/searchbar_height"
    android:background="@color/transparent"
    android:completionThreshold="1"
    android:completionHint="出现在匹配框下面的文字,可作为提示信息"
    android:maxLines="1"
    android:padding="5dp" />
completionThreshold:输入多少个字后开始匹配



java代码中:

需要RecycleView,填充RecycleView的List

1.将List的数据里面的name字段提取出来变成的一个String[]数组,使用自定义的toArray()方法

2.把Sting[]数组给一个ArrayAdapter用于提供AutoCompleteTextView地提示数据。

AutoCompleteTextView autoCompleteTextView;
RecyclerView contactRecycle;
autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.search_bar);
contactRecycle = (RecyclerView) findViewById(R.id.recycleview_contact);
contactRecycle.setLayoutManager(new LinearLayoutManager(activity));
//设置固定大小
//contactRecycle.setHasFixedSize(true);
contactRecycle.setItemAnimator(new DefaultItemAnimator());
//添加分割线
contactRecycle.addItemDecoration(new ItemDecoration());
contactRecycle.setAdapter(adapter);
autoCompleteTextView.setAdapter(
        new ArrayAdapter<String >(activity,android.R.layout.simple_list_item_1, toArray(contractList)));
autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        int p = search(autoCompleteTextView.getText().toString().trim());//获取选中内容在list中的位置
        if (position==-1){
            showShortToast("没有相关记录");
        }
        else contactRecycle.smoothScrollToPosition(p);//recycleView跳转到p位置
    }
});
private String[] toArray(List<Contract> list){
    String[] strings = null;
    if (list!=null) {
        strings = new String[list.size()];
        for (int i=0;i<list.size();i++){
            strings[i] = list.get(i).name;
        }
    }
    return strings;
}
private int search(String name){
    int position = 0;
    for (Contract c:contractList) {
        position++;
        if (c.name.equals(name)){
            return position;
        }
    }
    return -1;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AutocompleteTextView is a subclass of EditText view in Android that shows suggestions automatically while the user is typing. It is commonly used in search functionalities and other similar scenarios. To use AutocompleteTextView in Android Studio, you first need to add the AutoCompleteTextView to your layout XML file. Here's an example: ``` <AutoCompleteTextView android:id="@+id/autoCompleteTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Enter a city name" android:textColorHint="#999" android:completionThreshold="1" android:popupBackground="@color/white" android:dropDownVerticalOffset="10dp" android:elevation="2dp"/> ``` In the above example, `completionThreshold` attribute specifies the minimum number of characters required to trigger the suggestion popup. `popupBackground` attribute specifies the background color of the suggestion popup, and `dropDownVerticalOffset` attribute specifies the vertical offset of the suggestion popup. To provide suggestions to the AutocompleteTextView, you need to set an adapter that provides data to the suggestion popup. Here's an example: ``` AutoCompleteTextView autoCompleteTextView = findViewById(R.id.autoCompleteTextView); String[] cities = {"New York", "Los Angeles", "Chicago", "Houston", "Philadelphia", "Phoenix", "San Antonio", "San Diego", "Dallas", "San Jose"}; ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, cities); autoCompleteTextView.setAdapter(adapter); ``` In the above example, we create an array of cities and provide it to the ArrayAdapter, which then sets the adapter to the AutocompleteTextView. Now, when the user types in the AutocompleteTextView, it will show suggestions based on the provided data.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值