Android中控件AutoCompleteTextView的使用方法和一些属性
<?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:orientation="vertical">
<AutoCompleteTextView
android:id="@+id/auto_seekTips"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="5dp"
android:completionThreshold="1"
android:dropDownWidth="match_parent"
android:dropDownVerticalOffset="10dp"
android:hint="请输入"
android:inputType="text"
android:lines="1"
android:maxLength="20"
android:paddingLeft="15dp"
android:textSize="15sp" /> </LinearLayout>
package com.chuanye.mybdemo; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable; import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AutoCompleteTextView; import java.util.ArrayList;
import java.util.List; public class Main5Activity extends AppCompatActivity {
//搜索提示控件
private AutoCompleteTextView auto_seektips; private List<Result> resultsList = new ArrayList<>(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5); //将控件实例化
auto_seektips = findViewById(R.id.auto_seekTips); Result result1 = new Result("aaa","aaaa");
Result result2 = new Result("bbb","bbbb");
Result result3 = new Result("ccc","cccc");
Result result4 = new Result("ddd","dddd");
Result result5 = new Result("eee","eeee");
Result result6 = new Result("fff","ffff");
resultsList.add(result1);
resultsList.add(result2);
resultsList.add(result3);
resultsList.add(result4);
resultsList.add(result5);
resultsList.add(result6);
Result result7 = new Result("aaa1","aaaaa");
Result result8 = new Result("bbb1","bbbbb");
Result result9 = new Result("ccc1","ccccc");
Result result10 = new Result("ddd1","ddddd");
Result result11 = new Result("eee1","eeeee");
Result result12 = new Result("fff1","fffff");
resultsList.add(result7);
resultsList.add(result8);
resultsList.add(result9);
resultsList.add(result10);
resultsList.add(result11);
resultsList.add(result12); //自定义适配器的设置
AutoCompleteTextAdapter adapter=new AutoCompleteTextAdapter(resultsList, Main5Activity.this);
auto_seektips.setAdapter(adapter); //AutoCompleteAdapter文本内容变化前 ,变化时,变化后的一个实时监听
//AutoCompleteTextView控件的点击事件
auto_seektips.addTextChangedListener(new TextWatcher() {
@Override//改变之前
public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override//改变时
public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override//改变后
public void afterTextChanged(Editable s) { }
}); //AutoCompleteAdapter点击事件的设置, auto_seektips.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
auto_seektips.setText("");
//获取到过滤后的结果的集合
ArrayList<Result> results=AutoCompleteTextAdapter.newvalues; if (results != null && results.size() > 0){
Result result=results.get(position);
String s=result.getDistrict();
auto_seektips.setText(s);
//将光标放到文本最后
auto_seektips.setSelection(auto_seektips.getText().length());
}else {
auto_seektips.setText("");
} }
}); }
}
package com.chuanye.mybdemo; import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView; import java.util.ArrayList;
import java.util.List; public class AutoCompleteTextAdapter extends BaseAdapter implements Filterable { private ArrayFilter mFilter;//数据过滤器
private List<Result> mList;//传进来的数据
private ArrayList<Result> mFilteredData;//
private Context context;//上下文
public static ArrayList<Result> newvalues;
public AutoCompleteTextAdapter(List<Result> mList, Context context) {
this.mList = mList;
this.context = context;
} @Override
public int getCount() {
return mList == null ? 0 : mList.size();
} @Override
public Object getItem(int position) {
return mList.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
ViewHolder viewHolder;
if (convertView == null) {
view = View.inflate(context, R.layout.seektipitem2, null);
viewHolder = new ViewHolder();
viewHolder.tv_city = view.findViewById(R.id.tv_city);
viewHolder.tv_city1 = view.findViewById(R.id.tv_city1);
view.setTag(viewHolder);
} else {
view = convertView;
viewHolder = (ViewHolder) view.getTag();
} Result resultlist = mList.get(position);
viewHolder.tv_city.setText(resultlist.getName());
viewHolder.tv_city1.setText(resultlist.getDistrict()); return view;
}
class ViewHolder {
public TextView tv_city;
public TextView tv_city1; } /**
* 在后台线程执行,定义过滤算法
* getFilter()方法会返回一个Filter对象,Filter是一个数据过滤器,其过滤操作是通过performFiltering()方法和publishResult()方法完成的。
* performFiltering()方法进行过滤操作,publishResult()方法用于发表过滤操作结果。
*
* @return
*/
@Override
public Filter getFilter() {
//创建过滤器的对象
if (mFilter == null) {
mFilter = new ArrayFilter();
}
return mFilter;
}
//过滤器类
class ArrayFilter extends Filter {
/**
* @param constraint:用户在输入框中所输入的内容
* @return
*/
@Override//进行过滤操作
protected FilterResults performFiltering(CharSequence constraint) {
//使用过滤操作的结果
FilterResults results = new FilterResults(); if (mFilteredData == null) {
//以一个集合初始化mFilteredData=new ArrayList<String>(mList);//mList(数组容量)为集合
mFilteredData = new ArrayList<>(mList);
}
//如果没有输入内容,则不过滤
if (constraint == null || constraint.length() == 0) {
ArrayList<Result> list = mFilteredData;
results.values = list;
results.count = list.size();
} else {
//过滤的条件
String constraintString = constraint.toString().toLowerCase();
//将传进来的全部数据赋值给filteredValues
ArrayList<Result> filteredValues = mFilteredData;
int count = filteredValues.size(); newvalues = new ArrayList<>(count);
//循环变量数据源,如果有属性满足过滤条件,则添加到result中
for (int i = 0; i < count; i++) {
Result resultData = filteredValues.get(i);
if (resultData != null) { //过滤条件
if (resultData.getDistrict() != null && resultData.getDistrict().startsWith(constraintString)) {
newvalues.add(resultData);
}
} results.values = newvalues;
results.count = newvalues.size();
}
}
return results;
}
@Override//发表过滤操作结果
protected void publishResults(CharSequence constraint, FilterResults results) { mList = (List<Result>) results.values;
if (results.count > 0) {
//重绘当前可见区域
notifyDataSetChanged();
} else {
//重绘控件,还原到初始状态
notifyDataSetInvalidated();
}
}
} }
来源:https://blog.csdn.net/wpn_931/article/details/82799930
Android中控件AutoCompleteTextView的使用方法和一些属性的更多相关文章
- Android webview 写入cookie的解决方法以及一些属性设置
原文地址:https://www.2cto.com/kf/201703/616868.html Android webview 写入cookie的解决方法以及一些属性设置,webview怎么设置写入C ...
- Android——控件AutoCompleteTextView 自动提示
Android:控件AutoCompleteTextView 自动提示 在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,这种效果在Android中是用AutoCompleteTextV ...
- Android 控件 -------- AutoCompleteTextView 动态匹配内容,例如 百度搜索提示下拉列表功能
AutoCompleteTextView 支持基本的自动完成功能,适用在各种搜索功能中,并且可以根据自己的需求设置他的默认显示数据.两个控件都可以很灵活的预置匹配的那些数据,并且可以设置输入多少值时开 ...
- Android中控件属性详细总结(转载)
转载地址:https://www.cnblogs.com/nanguojs/p/5950510.html 1.LinearLayout(线性布局): 可以分为水平线性:android:orientat ...
- Android控件——AutoCompleteTextView与MultiAutoCompleteTextView(实现自动匹配输入的内容)
------------------------------------AutoCompleteTextView----------------------
- Android控件ToggleButton的使用方法
ToggleButton(开关button)是Android系统中比較简单的一个组件,是一个具有选中和未选择状态双状态的button.而且须要为不同的状态设置不同的显示文本. ToggleButton ...
- Android中控件之间添加分割线
将以下view标签放置在需要分割的两个控件之间: <View android:layout_width=”match_parent” android:layout_height=”1dp” an ...
- HTML中禁用表中控件的两种方法与区别
在网页的制作过程中,我们会经常使用到表单.但是有时候我们会希望表单上的控件是不可修改的,比如在修改密码的网页中,显示用户名的文本框就应该是不可修改状态的. 在html中有两种禁用的方法,他们分别是: ...
- Android 控件EditText的setOnEditorActionListener方法的理解
需要注意的是 setOnEditorActionListener这个方法,并不是在我们点击EditText的时候触发,也不是在我们对EditText进行编辑时触发,而是在我们编辑完之后点击软键盘上的回 ...
随机推荐
- IComparable和IComparer接口
C#中,自定义类型,支持比较和排序,需要实现IComparable接口.IComparable接口存在一个名为CompareTo()的方法,接收类型为object的参数表示被比较对象,返回整型值:1表 ...
- Pandas | 02 Series 系列
系列(Series)是能够保存任何类型的数据(整数,字符串,浮点数,Python对象等)的一维标记数组.轴标签统称为索引. pandas.Series Pandas系列可以使用以下构造函数创建 - p ...
- Java——判断回文
package basic; import java.util.Scanner; public class Palindrome{ public static boolean isPalindrome ...
- 【LG2605】[ZJOI2010]基站选址
[LG2605][ZJOI2010]基站选址 题面 洛谷 题解 先考虑一下暴力怎么写,设\(f_{i,j}\)表示当前\(dp\)到\(i\),且强制选\(i\),目前共放置\(j\)个的方案数. 那 ...
- celery工作原理介绍
在学习Celery之前,我先简单的去了解了一下什么是生产者消费者模式. 生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是 ...
- 前端,DJ
Vue模块 1.Vue都有哪些指令,简单说说? """ Vue里面常见指令有文本指令:v-text.v-html,属性指令:v-bind,方法指令:v-on,条件指令:v ...
- Redis NOAUTH Authentication required
redis设置密码后停止服务报错,NOAUTH Authentication required 可以修改/etc/init.d/redis文件中的stop命令 $CLIEXEC -p $REDISPO ...
- TP-LINK WR703N OpenWrt 无线配网历程
① 创建了两个 Interfaces,名字分别为 lan.wlan0 (可自行设定),一个负责连接 PPPoE,一个负责提供 AP 热点. ② 配置 wlan0 相关 ip 地址,该地址为无线网内网地 ...
- Spring中Bean命名源码分析
Spring中Bean命名源码分析 一.案例代码 首先是demo的整体结构 其次是各个部分的代码,代码本身比较简单,不是我们关注的重点 配置类 /** * @Author Helius * @Crea ...
- Oracle账号,用于下载jdk
账号:liwei@xiaostudy.com 密码:OracleTest1234