Android AutoCompleteTextView控件实现类似百度搜索提示,限制输入数字长度

Android AutoCompleteTextView 控件实现类似被搜索提示,效果如下

1.首先贴出布局代码 activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><AutoCompleteTextViewandroid:id="@+id/autocomplete"android:layout_width="fill_parent"android:layout_height="wrap_content" /><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginTop="100dp"android:orientation="horizontal" ><TextViewandroid:id="@+id/tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:ellipsize="marquee"android:focusable="true"android:focusableInTouchMode="true"android:marqueeRepeatLimit="marquee_forever"android:scrollHorizontally="true"android:text="Please input the text:"android:textSize="18sp" /><EditTextandroid:id="@+id/ET"android:layout_width="fill_parent"android:layout_height="wrap_content"android:hint="只能输入10位数字"android:inputType="number" /></LinearLayout></LinearLayout>

2.控件下拉列表项布局文件 main_item_row.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/brandName"android:layout_width="fill_parent"android:layout_height="30dp"android:textSize="18sp" /><TextViewandroid:id="@+id/searchText"android:layout_width="fill_parent"android:layout_height="wrap_content"android:visibility="gone" /></LinearLayout>

3.java 代码实现:MainActivity.java

package com.example.autocompletetextview;import java.util.ArrayList;
import java.util.HashMap;import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AutoCompleteTextView;
import android.widget.EditText;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends Activity {ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();AutoCompleteTextView autoCompleteTextView;private EditText mEditText;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);addItems();autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autocompleteTV);SimpleAdapter notes = new SimpleAdapter(this, list,R.layout.main_item_row, new String[] { "brandSearchText","brandName" }, new int[] { R.id.searchText,R.id.brandName });autoCompleteTextView.setAdapter(notes);autoCompleteTextView.setThreshold(1);autoCompleteTextView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {TextView tv = (TextView) arg1.findViewById(R.id.brandName);autoCompleteTextView.setText(tv.getText().toString() + " ");autoCompleteTextView.setSelection((autoCompleteTextView.getText().toString()).length());}});/** TextWatcher操作 */mEditText = (EditText) findViewById(R.id.ET);mEditText.addTextChangedListener(mTextWatcher);}private void addItems() {HashMap<String, String> item;item = new HashMap<String, String>();item.put("brandSearchText", "NOKIA nuojiya NJY");item.put("brandName", "诺基亚");list.add(item);item = new HashMap<String, String>();item.put("brandSearchText", "SVMSUN SX sanxing");item.put("brandName", "三星");list.add(item);item = new HashMap<String, String>();item.put("brandSearchText", "SVMSUN SX sanzhi");item.put("brandName", "三只松鼠");list.add(item);item = new HashMap<String, String>();item.put("brandSearchText", "摩托罗拉  moto MTLL motuoluola motoloar");item.put("brandName", "摩托罗拉");list.add(item);}TextWatcher mTextWatcher = new TextWatcher() {private CharSequence temp;private int editStart;private int editEnd;@Overridepublic void beforeTextChanged(CharSequence s, int arg1, int arg2,int arg3) {temp = s;}@Overridepublic void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) {}@Overridepublic void afterTextChanged(Editable s) {editStart = mEditText.getSelectionStart();editEnd = mEditText.getSelectionEnd();if (temp.length() > 10) {Toast.makeText(MainActivity.this, "你输入的字数已经超过了限制!",Toast.LENGTH_SHORT).show();s.delete(editStart - 1, editEnd);int tempSelection = editStart;mEditText.setText(s);mEditText.setSelection(tempSelection);}}};
}

 

转载于:https://www.cnblogs.com/_ymw/p/4147212.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos/RHEL上查看主板型号

老是搞忘记&#xff0c;专门做个记录&#xff1a; [rootmedia ~]# dmidecode | grep "Product Name" Product Name: To be filled by O.E.M.Product Name: B75M-D3V 修改默认语言&#xff1a;[chenshouyongmedia ~]$ cat /etc/sysconfig/i18n LANG"en_US.UTF-8…

java即时聊天系统毕业_(完整版)基于Java即时聊天系统的设计与实现毕业论文设计...

目录1 前言...................................................................................................................................1.1 课题选题背景...................................................................................................…

杭电 1284 钱币兑换问题【完全背包求方案总数】

解题思路&#xff1a;因为对于完全背包的状态转移方程f[v]max(f[v],f[v-c[i]]w[i])已经记录了所有背包组成的方案&#xff0c;只不过通常问的是求最大值&#xff0c;现在要求方案总数 即为 f[v]sum(f[v],f[v-c[i]w[i]]), Problem Description在一个国家仅有1分&#xff0c;2分&…

java与算法_Java与算法之(1) - 冒泡排序

冒泡排序法的原理是&#xff0c;每次比较相邻的两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。例如对4 3 6 2 7 1 5这7个数字进行从小到大的排序&#xff0c;从最左侧开始&#xff0c;首先比较4和3因为是从小到大排序&#xff0c;4和3的顺序显然是错误的&#xff0…

Js+XML 操作

我的xml文件Login.xml如下. <?xml version"1.0" encoding"utf-8" ?><Login><Character><C Text"热血"Value"0"></C><C Text"弱气"Value"1"></C><C Text"激情…

Java(Android)线程池

1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗&#xff1f; [java] view plaincopy new Thread(new Runnable() { Override public void run() { // TODO Auto-generated method stub } }).start(); 那你就out太多了&#xff0c;n…

JQuery链式操作简单的菜单列表

看到这个简单的菜单demo&#xff0c;也是为了再看看JQuery对DOM的操作&#xff0c;一直都记不牢&#xff0c;特别是siblings&#xff08;&#xff09;这个总是想不起来。 这次再过一遍JQuery&#xff0c;不管简单的还是复杂的demo 还是坚持练习一遍吧&#xff01;只为记录&…

java 网络编程实验_Java网络编程入门实验一涉及点

1.http://www.cr173.com/html/20128_all.html 【wireshark怎么抓包、wireshark抓包详细图文教程】2.http://blog.csdn.net/huangjin0507/article/details/51678858 【HTTP协议1&#xff1a;工作原理】3.https://www.cnblogs.com/1666818961-lxj/p/7210021.html 【网络常用端口号…

node.js async流程控制器--queue(队列)

queue流程控制器是一个并行的流程控制器,但是它与parallel的区别在于queue可以控制一次执行几个函数,而parallel只是让所有函数并行执行. 例子如下: var q async.queue(function (obj,cb) {setTimeout(function () {console.log(obj);cb(); },obj.time) },1)for (var i 0; i&…

利用JS实现点击上一周或下一周却换

1.页面加载显示当前年份的第几周 效果如图&#xff1a; html代码&#xff1a; <font size"2" color"black"> <input id"btnweek5" type"button" class"btn" value"上周" οnclick"EduCommissio…

centos7网卡编辑_CentOS7修改网卡为eth0

1.编辑网卡信息[rootlinux-node2~]#cd /etc/sysconfig/network-scripts/ #进入网卡目录[rootlinux-node2network-scripts]# mv ifcfg-eno16777728 ifcfg-eth0 #重命名网卡名称[rootlinux-node2 network-scripts]#cat ifcfg-eth0 #编辑网卡信息TYPEEthernetBOOTPROTOstaticDEFR…

C# 微支付退款申请接口 V3.3.6

/// <summary>/// 微支付退款申请/// </summary>/// <param name"context"></param>/// <param name"returnMsg"></param>/// <returns></returns>public bool Refund(HttpContext context, ref string r…

[转] 英语、计算机、互联网与全球化

http://davidzhao.blog.51cto.com/4548102/1225732 转载于:https://www.cnblogs.com/wowk/p/3169638.html

APNIC IP 库

http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest转载于:https://www.cnblogs.com/dlwj/p/6388162.html

java reference 传引用_Java的引用(reference)---Roni

摘自《Java面向对象编程》一书,作者:孙卫琴 来源:www.javathinker.org在JDK1.2以前的版本中&#xff0c;当一个对象不被任何变量引用&#xff0c;那么程序就无法再使用这个对象。也就是说&#xff0c;只有对象处于可触及状态&#xff0c;程序才能使用它。这就像在日常生活中&am…

C# 以管理员身份运行程序

刚看了一篇博友写的“以管理员身份运行程序”, 所以我也来写一个简单易懂的&#xff0c;简单两步搞定&#xff0c;不用写任何代码&#xff1a; 第一步&#xff1a; 右键选择项目 > 添加 > 新建项 &#xff1b; 找到 应用程序清单文件&#xff0c;后缀名为manifest&#x…

会计转行从事IT,如何在一年时间内全职学习?

2019独角兽企业重金招聘Python工程师标准>>> https://www.zhihu.com/question/21427478/answer/18227060 转载于:https://my.oschina.net/soho00147/blog/836138

VS2010中使用CL快速 生成DLL的方法

方案一&#xff1a; 1、命令行中输入cl example.cpp&#xff0c;生成example.obj和example.lib文件。有可能还会提示“没有入口点”的错误。这是因为我们的CPP中是要生成dll文件的&#xff0c;并没有main()这样的主函数作为入口点。如果是C文件&#xff0c;则输入cl /c exampl…

java field 获得值_反射通用获取字段值

像之前回答的那样&#xff0c;您应该使用&#xff1a;Object value field.get(objectInstance);有时更喜欢的另一种方法是动态调用getter。示例代码&#xff1a;public static Object runGetter(Field field, BaseValidationObject o){// MZ: Find the correct methodfor (Met…

android 中如何模拟back键

主要是在使用Fragment时能够返回前一级&#xff0c;所以才找到了这些资料。 有两种方式可以实现&#xff0c;直接上代码 方法1&#xff1a; public void onBack(){new Thread(){public void run() {try{Instrumentation inst new Instrumentation();inst.sendKeyDownUpSync(Ke…