AutoCompleteTextView使用中的注意事项
在之前的一篇文章当中,介绍了如何使用AutoCompleteTextView按照关键字从服务器上获得数据显示下拉列表。博主也是按照文中的思想在项目开发当中实际运作,使用效果不错,客户见了之后直呼效果很好。但是最近团队中其他人在使用时遇到一头痛的BUG,博主调试了半个小时才调试出来,在这里把BUG和解决方法贴出来,大家参考。
一、功能介绍:在使用AutoCompleteTextView按照关键字从服务器上获得人员信息JSON数据,并把JSON数据中人员名称显示在下来列表中,当用户选中下拉列表中的Item时,需要将选中的Item中从List<Item>中取出来,保存下来,以备后面使用。这就相当于一个新闻列表,我选中新闻时进入新闻的详细信息的操作。只不过这里是将选中的Item中的一部分值放入AutoCompleteTextView,将其他信息保存下来。
如下图,我有可能选中中国气象局,然后将其详细信息保存当javabean中。
OnItemClickListener itemClickListener = new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {int key = parent.getId();//错误发生在这里Log.d(TAG, "key is " + key + " and R.id.autoCompleteTextView1 is "+ R.id.autoCompleteTextView1);switch (key) {case R.id.autoCompleteTextView1:Log.d(TAG, "I am magic in place!");break;}}};便永远执行不到。这也就导致了其所对应的Item信息没有存放到对应的Javabean中。错误的具体原因是,parent.getId()所得到的是对应View的id,而其所对应的View是一个listview,而这个listview没有在我们的R文件当中注册,它是系统自带的一个组件,而不是我们这里的 R.id.autoCompleteTextView1。因此也就发生了以上悲剧。三、解决方案去掉switch case代码,直接进行Javabean的赋值操作。