项目中用到AutoCompleteTextView  自动提示功能,如果用自带的ArrayAdapter就一种样式,非常丑,而且每一项提示文字过多的话不会自动换行。

所以自己自定义了一个适配器。

效果图:

1、每一项的布局文件:(可以自己定义)

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical">

android:id="@+id/text1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:gravity="center_vertical"

android:layout_marginLeft="@dimen/dimen_10"

android:layout_marginRight="@dimen/dimen_10"

android:layout_marginTop="@dimen/dimen_5"

android:layout_marginBottom="@dimen/dimen_5"

android:textSize="@dimen/textsize_14"

android:lineSpacingExtra="@dimen/dimen_4"

android:singleLine="false" />

android:layout_width="match_parent"

android:layout_height="@dimen/dimen_2"

android:background="@color/line_bg"

android:layout_marginLeft="@dimen/dimen_10"

android:layout_marginRight="@dimen/dimen_5"/>

这里用android:lineSpacingExtra="@dimen/dimen_4"属性指定了一下行间距。

2、适配器代码如下:

package nari.app.BianDianYingYong.adapter;

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;

import nari.app.BianDianYingYong.R;

/**

* Created by weihao on 2018/5/28.

* 继承BaseAdapter,实现Filterable

*/

public class AutoEditTextAdapter extends BaseAdapter implements Filterable {

private ArrayFilter mFilter;

private List mList;

private Context context;

private ArrayList mUnfilteredData;

public AutoEditTextAdapter(List mList, Context context) {

this.mList = mList;

this.context = context;

}

@Override

public int getCount() {

return mList==null ? :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 holder;

if(convertView==null){

view = View.inflate(context, R.layout.autotext_list_item, null);

holder = new ViewHolder();

holder.text1 = (TextView) view.findViewById(R.id.text1);

view.setTag(holder);

}else{

view = convertView;

holder = (ViewHolder) view.getTag();

}

String pc = mList.get(position);

holder.text1.setText("-- "+pc);

return view;

}

static class ViewHolder{

public TextView text1;

}

@Override

public Filter getFilter() {

if (mFilter == null) {

mFilter = new ArrayFilter();

}

return mFilter;

}

private class ArrayFilter extends Filter {

@Override

protected FilterResults performFiltering(CharSequence prefix) {

FilterResults results = new FilterResults();

if (mUnfilteredData == null) {

mUnfilteredData = new ArrayList(mList);

}

if (prefix == null || prefix.length() == ) {

ArrayList list = mUnfilteredData;

results.values = list;

results.count = list.size();

} else {

String prefixString = prefix.toString().toLowerCase();

ArrayList unfilteredValues = mUnfilteredData;

int count = unfilteredValues.size();

ArrayList newValues = new ArrayList(count);

for (int i = ; i < count; i++) {

String pc = unfilteredValues.get(i);

if (pc != null) {

if(pc!=null && pc.startsWith(prefixString)){

newValues.add(pc);

}else if(pc!=null && pc.startsWith(prefixString)){

newValues.add(pc);

}

}

}

results.values = newValues;

results.count = newValues.size();

}

return results;

}

@Override

protected void publishResults(CharSequence constraint,

FilterResults results) {

mList = (List) results.values;

if (results.count > ) {

notifyDataSetChanged();

} else {

notifyDataSetInvalidated();

}

}

}

}

3、调用:

//获取控件实例

AutoCompleteTextView et_wtms = (AutoCompleteTextView) layout.findViewById(R.id.et_wtms);

//设置输入一个字就自动提示,默认是两个

et_wtms.setThreshold();

AutoEditTextAdapter adapter = new AutoEditTextAdapter(key, context);

et_wtms.setAdapter(adapter);

et_wtms.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) {

}

});

//点击就自动提示

et_wtms.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

et_wtms.showDropDown();

}

});

Siteserver-stl&colon;searchOutput&lpar;搜索结果&rpar;自定义显示样式

stl:searchOutput 自定义显示样式 自定义搜索提交表单需要在中嵌入显示搜索结果的标签,必须包含的标签 有

VaildForm 自定义提示消息

ValidForm插件提供了7种提示效果,其中有四种自定义效果,具体访问地址:http://validform.rjboy.cn/demo.html 个人偏爱其中两种,即 l 提示效果四:[自定义提示 ...

在ASP&period;NET中引用自定义提示框

在html网页中自定义提示框 正文: 在一般的B/S架构中项目,与用户的交互信息是非常重要的.在一般的情况下,设计人员都在把用户信息呈现在html中,用div和span去弹出相关信息.对于一般的情况而 ...

Android设置选项开发及自定义Preference样式

一个完整的Android应用程序都应该提供选项(或者叫偏好设置等等)让用户对APP的表现形式能够进行设置,比如说是否加入用户体验计划,或者是否自动升级.定时提醒.开启自启动.后台运行等等.提供一个好的 ...

vue2&period;0 自定义 提示框(Toast)组件

1.自定义 提示框 组件 src / components / Toast / index.js /** * 自定义 提示框( Toast )组件 */ var Toast = {}; var sho ...

vue 自定义 提示框(Toast)组件

1.自定义 提示框 组件 src / components / Toast / index.js /** * 自定义 提示框( Toast )组件 */ var Toast = {}; var sho ...

超酷HTML5 Canvas图表应用Chart&period;js自定义提示折线图

超酷HTML5 Canvas图表应用Chart.js自定义提示折线图 效果预览 实例代码

jQuery自定义滚动条样式插件mCustomScrollbar

如果你构建一个很有特色和创意的网页,那么肯定希望定义网页中的滚动条样式,这方面的 jQuery 插件比较不错的,有两个:jScrollPane 和 mCustomScrollbar. 关于 jScro ...

自定义plain 样式的 tableview&comma;模拟器上不显示分割线&comma;真机上却显示分割线&period;

一, 经历 1> 自定义plain 样式的 tableview,模拟器上不显示分割线,真机上却显示cell 下面的分割线. 2> 尝试使用表格的separatorStyle属性,尝试失败. ...

随机推荐

OpenStack 企业私有云的若干需求(3):多租户和租户间隔离&lpar;multi-tenancy and isolation&rpar;

本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

Masonry自动布局

介绍,入门: http://www.cocoachina.com/ios/20141219/10702.html 下载: http://code.cocoachina.com/detail/30114 ...

ThinkPHP3&period;1新特性:Action参数绑定

Action参数绑定功能提供了URL变量和操作方法的参数绑定支持,这一功能可以使得你的操作方法定义和参数获取更加清晰,也便于跨模块调用操作方法了.这一新特性对以往的操作方法使用没有任何影响,你也可以用 ...

android高仿微信拍照、多选、预览、删除&lpar;去除相片&rpar;相冊功能

先声明授人与鱼不如授人与渔,仅仅能提供一个思路,当然须要源代码的同学能够私下有偿问我要源代码:QQ:508181017 工作了将近三年时间了,一直没正儿八经的研究系统自带的相冊和拍照,这回来个高仿微信 ...

【一】仿微信飞机大战cocos2d-x3&period;0rc1

參考 [偶尔e网事] 的 [cocos2d-x入门实战]微信飞机大战  cocos2dx 2.0版本号,偶尔e网事他写的很具体,面面俱到,大家很有必要看下.能够通过以下链接跳转: cocos2d-x入 ...

如果一个Object对象可能是集合或者数组那么如何对其进行迭代

需求:一个方法传入的参数是Object类型(假设对象为“items”,使用Object类型也是为了使用多态而增加方法复用性),但已知这个Object对象可能是集合,包括Collection和Map,也 ...

LintCode题解之判断是否为平方数之和

简单粗暴 public class Solution { /* * @param : the given number * @return: whether whether there're two ...

Codeforces 799 D&period; Field expansion

题目链接:http://codeforces.com/contest/799/problem/D 因为${a_i>=2}$那么一个数字至多操作${log_{2}^{max(a,b)/min(h, ...

新的blog站地址

自己用Jekyll搭建了一个静态blog网站 以后的blog随笔就更新在:https:/blog.hudunsec.cn

Go语言判断if else语句

基本格式: if 条件语句{ 执行语句 }else{ 执行语句 } package main import "fmt" func main(){ fmt.Println(Add(- ...

android autocompletetextview 自定义,AutoCompleteTextView 自定义提示样式相关推荐

  1. 帆软V10.0爬坑之路(如何修改自定义图表块提示样式以及标签样式)

    如何修改自定义图表块提示样式以及标签样式 在标签和提示内容的地方选择自定义(其他可通过HTML代码编写的地方同理);可直接在其中填写HTML代码,来进行样式控制,以及背景图片等自定义(需勾选HTML解 ...

  2. 【Android UI设计与开发】第13期:顶部标题栏(四)自定义ActionBar风格和样式

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9087941   这篇文章将对ActionBar专题前面几篇学习过的内容做一个 ...

  3. android 自定义控件 焦点,Android 自定义Button按钮显示样式(正常、按下、获取焦点)...

    现在的用户对APP的外观看得很重要,如果APP内所有元件都用Android默认样式写,估计下面评论里就有一堆在骂UI丑的.今天学习自定义Button按钮样式.Button样式修改的是Button的背景 ...

  4. Android 验证码和密码输入框,能自定义输入框个数和样式(连体,下划线和方形框) 类似微信支付宝的密码输入框等

    MNPasswordEditText 项目地址:maning0303/MNPasswordEditText  简介: Android 验证码和密码输入框,能自定义输入框个数和样式(连体,下划线和方形框 ...

  5. Android怎么自定义充电铃声,安卓手机怎么自定义充电提示音_自定义安卓充电提示音教程_3DM手游...

    安卓手机其实也是可以设置充电提示音的,我们只需要下载一个第三方软件,然后在APP中进行一些简单的设置,就可以实现自定义更换手机充电提示音了.安卓手机怎么自定义充电提示音?下面小编就为大家带来了详细的教 ...

  6. android弹出框自定义按钮,安卓(kotlin)自定义弹出框

    在安卓开发中,我们经常会遇到这种情况,就是可爱的UI们设计了一套属于我们自己风格的弹出框,为了彰显我们自己的风格,使用自动的dialog当然满足不了我们的需求,所以还是得这基础上写出我们自己的提示框, ...

  7. 顶部标题栏(四)自定义ActionBar风格和样式

    这篇文章将对ActionBar专题前面几篇学习过的内容做一个总结,顺便运用以前学过的知识实现一个自定义样式的ActionBar标题栏效果.话不多说,进入今天的正题. 一.实现效果图 竖屏效果图:最左边 ...

  8. Android中RatingBar的自定义效果

    Android中RatingBar的自定义效果 有时候android系统提供给我们的ratingbar效果并不达到我们的要求,这个时候就可以自定义自己喜欢的ratingbar. 从上面的效果可以看出, ...

  9. android 自定义表单,Android实现Ant Design 自定义表单组件

    Ant Design 组件提供了Input,InputNumber,Radio,Select,uplod等表单组件,但实际开发中这是不能满足需求,同时我们希望可以继续使用Form提供的验证和提示等方法 ...

最新文章

  1. 熬夜精心整理的一线大厂大数据、人工智能全套教程下载(含视频+源码)!!...
  2. LIST 和 MAP
  3. 零基础python入门课程-零基础 Python 入门
  4. java:socket通信
  5. anaconda安装的TensorFlow版本没有model这个模块
  6. jsf集成spring_Spring和JSF集成:转换器
  7. 搜索回溯——N皇后(hdu2553)
  8. Exchange2003-2010迁移系列之十一,Exchange2010 OWA配置
  9. js对象赋值只保留存在的属性_js对象的创建对象模式和继承模式(上)---构建对象模式...
  10. 自己的父母,能把钱交给他们存吗?
  11. 小米为什么拆分红米? | 畅言
  12. 20165205 2017-2018-2 《Java程序设计》第六周学习总结
  13. 计算机多媒体基础应用,《计算机应用基础》典型多媒体课件简介
  14. HAL库控制PS2手柄
  15. Android天气预报详解
  16. 用什么擦地最干净脑筋急转弯_100个脑筋急转弯,很多人困在了第8题,赶快考考孩子吧...
  17. 图扑软件数字孪生油气管道站,搭建油气运输管控平台
  18. cad页面布局快捷键_CAD页面设置管理器快捷键命令(如何设置页面布局)
  19. 文件上传/JS/MIME/黑名单/白名单/htaccess/00截断详解篇[代码审计]
  20. 图像自动裁剪和角度矫正

热门文章

  1. P5470 [NOI2019] 序列
  2. 电脑神器- Snipaste(截图神器)+Ditto(剪贴板)推荐篇
  3. 疫情时期的程序员爱情,看完我酸了!
  4. 【十九届浙大城市学院程序设计竞赛 - 周训】
  5. linux系统oracle监听器报错,ORACLE监听器 The listener supports no services 问题解决方法...
  6. 如何查看远程计算机端口是否,怎么检查win7电脑3389端口是否被开启
  7. 【深度学习】论网络深度的利弊
  8. Delphi中MDI窗体调用MDI子窗体Delphi中MDI窗体调用MDI子窗体,怎么调用
  9. 网络地址转换(NAT)(二)
  10. nat配置(网络地址转换)