AutoCompleteTextView setOnItemSelectedListener 无效
来源:互联网 发布:国际网络交易平台 编辑:程序博客网 时间:2024/06/02 02:13
Android源码库里面,这个类的 OnItemSelectedListener事件没有做处理!
所以在使用这个类时,OnItemClickListener有效果,而OnItemSelectedListener没有效果的!
解决方法:利用反射机制,进行设置;
代码如下:
- /**
- *
- */
- package com.telecom.surfing.tvcn.view;
- import java.lang.reflect.Field;
- import android.content.Context;
- import android.util.AttributeSet;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.view.View;
- import android.view.inputmethod.InputMethodManager;
- import android.widget.AdapterView;
- import android.widget.ListPopupWindow;
- /**
- * 从写了 onKeyPreIme(),back时,只隐藏软键盘;
- * 新增了OnItemSelectedListener处理,Android默认没有做该方法的回调处理
- *
- */
- public class AutoCompleteTextView extends android.widget.AutoCompleteTextView{
- private AdapterView.OnItemSelectedListener onItemSelectedListener=null;
- /**
- * @param context
- * @param attrs
- */
- public AutoCompleteTextView(Context context, AttributeSet attrs) {
- super(context, attrs);
- initOnItemSelectedLister();
- }
- /**
- * @param context
- */
- public AutoCompleteTextView(Context context) {
- super(context);
- initOnItemSelectedLister();
- }
- /**
- * @param context
- * @param attrs
- * @param defStyle
- */
- public AutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- initOnItemSelectedLister();
- }
- /* (non-Javadoc)
- * @see android.widget.AutoCompleteTextView#onKeyPreIme(int, android.view.KeyEvent)
- */
- @Override
- public boolean onKeyPreIme(int keyCode, KeyEvent event) {
- Log.d("KEy", "KEy->AutoCompleteTextView onKeyPreIme,keycode="+keyCode);
- InputMethodManager imm = (InputMethodManager)this.getContext().getSystemService(this.getContext().INPUT_METHOD_SERVICE);
- if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction()== android.view.KeyEvent.ACTION_UP){//当软键盘显示时,按back按钮时,只隐藏软键盘;
- if(imm.hideSoftInputFromWindow(this.getWindowToken(), 0)){
- //imm.showSoftInput(textView,0);
- return true;
- }
- }
- return super.onKeyPreIme(keyCode, event);
- }
- private void initOnItemSelectedLister(){
- try {
- Field mPopuoField = AutoCompleteTextView.class.getSuperclass().getDeclaredField("mPopup");
- mPopuoField.setAccessible(true);
- ListPopupWindow mPopup = (ListPopupWindow) mPopuoField.get(this);
- mPopup.setOnItemSelectedListener(new PopWindOnItemSelectedListener());
- mPopuoField.setAccessible(false);
- } catch (NoSuchFieldException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- class PopWindOnItemSelectedListener implements AdapterView.OnItemSelectedListener{
- /* (non-Javadoc)
- * @see android.widget.AdapterView.OnItemSelectedListener#onItemSelected(android.widget.AdapterView, android.view.View, int, long)
- */
- @Override
- public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
- if(onItemSelectedListener!=null){
- onItemSelectedListener.onItemSelected(arg0, arg1, arg2, arg3);
- }
- }
- /* (non-Javadoc)
- * @see android.widget.AdapterView.OnItemSelectedListener#onNothingSelected(android.widget.AdapterView)
- */
- @Override
- public void onNothingSelected(AdapterView<?> arg0) {
- if(onItemSelectedListener!=null){
- onItemSelectedListener.onNothingSelected(arg0);
- }
- }
- }
- /**
- * @return the onItemSelectedListener
- */
- public AdapterView.OnItemSelectedListener getOnItemSelectedListener() {
- return onItemSelectedListener;
- }
- /**
- * @param onItemSelectedListener the onItemSelectedListener to set
- */
- public void setOnItemSelectedListener(AdapterView.OnItemSelectedListener onItemSelectedListener) {
- this.onItemSelectedListener = onItemSelectedListener;
- }
- /* (non-Javadoc)
- * @see android.widget.AutoCompleteTextView#performFiltering(java.lang.CharSequence, int)
- */
- @Override
- protected void performFiltering(CharSequence text, int keyCode) {
- //重写该方法后,输入字符时,就不会过滤;
- // super.performFiltering(text, keyCode);
- }
- }
0 0
- AutoCompleteTextView setOnItemSelectedListener 无效
- AutoCompleteTextView setOnItemSelectedListener 无效
- Android ListView setOnItemClickListener/setOnItemSelectedListener,无效
- 关于AutoCompleteTextView设置背景无效的解决办法
- setOnItemSelectedListener(出错
- AutoCompleteTextView
- AutoCompleteTextView
- AutoCompleteTextView
- AutoCompleteTextView
- AutoCompleteTextView
- AutoCompleteTextView
- AutoCompleteTextView
- AutoCompleteTextView
- autocompletetextview
- AutoCompleteTextView
- autocompletetextview
- AutoCompleteTextView
- AutoCompleteTextView
- Spring系列(2)--为什么需要动态代理
- 微服务(Microservice)那点事
- iOS导航栏隐藏的情况下设置状态栏颜色
- go error panic deffer recover
- 方差和标准差概念详解
- AutoCompleteTextView setOnItemSelectedListener 无效
- DevExpress添加右键菜单
- Handler、MessageQueue、Looper 三基友关系图解
- SSH无密码验证登录服务器
- 一个老鸟发的公司内部整理的 Android 学习路线图
- 导入他人androidstudio项目出现gradle不匹配等问题的解决办法(自己亲测)
- 类似于微信和QQ消息列表的数字红点,拖拽消失
- HDU 4781 Assignment For Princess 图论,构造,思维
- LQB 1E