移植Android4.0中的AutoCompleteTextView自动完成文本框控件用于低版本的系统

本文确实没什么技术含量,毕竟我也是一个菜鸟,仅仅是为了新手朋友不要再重蹈我当年的覆辙,多走弯路而已!


本文是在上一篇的基础上实现的的一个自动完成文本框的DEMO


老规矩,先上效果图









做这个小DEMO的主要注意的地方有两处,一是万万不可给popupwindow设置得到焦点,即setFocusable(true),不然他会抢占EditText的焦点,使得EditText得不到输入,

二是不能给popupwindow中的listView绑定OnItemClickListener监听器,此时点击是有选中的效果,即背景色发生了切换,但是监听器的方法没有触发。


那怎么给listView绑定监听器呢?


这时候就需要换个思路了,既然不能给popupwindow中的listView绑定通用监听器,那就挨个给其上的view绑定OnClickListener监听器,我在这里直接给ListView的每一个item绑定上了单击监听器,在监听器的回调方法中取出其中的TextView的内容进行相应的操作。这个时候又出现了一个新的问题,怎么区分点击的是哪一个item呢?所以必须要想一个办法给onClick(View v)中的v中传递参数,然后就想到了holder类,holder类是我们在adapter中保存item视图的,用于实现资源复用的,并且我们用到了他的settag方法,既然可以既可以在holder中动脑筋了,最简单的方法就是在holder声明一个成员变量保存position值。 并且onClick(View v)中的v就是adapter中的一个item对象,其中我们就可以直接通过gettag()方法取出holder,这样我们也得到了position值。至此主要的逻辑也大体清楚了。


接下啦就开始码代码吧。


一些selector和背景贴图我就不贴了,大体上和上一篇下拉列表是一样的


接下来是新建一个工程,。

主要思路,首先继承EditText控件,并绑定一个文本变换监听器,通过该监听器回调通知进行数据变更,然后更新UI


首先新建一个MyAutoCompleteTextView类继承自EditText类。

代码我就直接贴出来了


package com.example.myautocompletetextview;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdap
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值