- 浏览: 1209024 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (353)
- java基础 (40)
- tapestry (16)
- gwt (14)
- ajax (7)
- linux (8)
- ubuntu (18)
- eclipse (6)
- dojo (2)
- javascript (7)
- maven (4)
- 日常生活 (29)
- web2.0 (2)
- jsonrpc (1)
- compass (1)
- lucene (0)
- spring (10)
- cluster (3)
- 数据结构 (2)
- sqlserver (1)
- tomcat (2)
- swing (1)
- servlet (1)
- hibernate (1)
- firefox (1)
- Java-Puzzlers (1)
- Wicket (2)
- mysql (10)
- windows (5)
- Webwork (1)
- struts2 (1)
- Seam (2)
- jboss (1)
- idea (6)
- 分布计算 (3)
- Python-Django (7)
- Hadoop (1)
- 工具 (3)
- Tokyo Tyrant (2)
- Comet (1)
- android (115)
- 音乐 (6)
- cxf (1)
- mqtt (1)
最新评论
-
hesai_vip:
学习了,感谢
gradlew wrapper使用下载到本地的gradle.zip文件安装。 -
imknown:
姚瑶大坏蛋 写道我也遇到了这个,用你这个方法,导致下拉刷新不起 ...
解决android-Ultra-Pull-To-Refresh下拉刷新组件中嵌套ViewPager的一个bug -
姚瑶大坏蛋:
我也遇到了这个,用你这个方法,导致下拉刷新不起作用了,你遇到过 ...
解决android-Ultra-Pull-To-Refresh下拉刷新组件中嵌套ViewPager的一个bug -
寐语者:
LeaderElection(String zookeeper ...
使用Zookeeper来为你的程序加上Leader Election的功能。 -
fyc0109:
博主, 安装了一部分还是报这个错误!FAILURE: Buil ...
gradlew wrapper使用下载到本地的gradle.zip文件安装。
很多时候, 在做自动下拉框时,默认点上去时需要显示一组默认的下拉数据。但是默认的AutoCompleteTextView是实现不了的, 因为setThreshold方法最小值是1,就算你设的值为0,也会自动改成1的。
这时我们可以创建一个类 继承AutoCompleteTextView,覆盖enoughToFilter,让其一直返回true就行。 然后再主动调用showDropDown方法, 就能在不输入任何字符的情况下显示下拉框。
ref:http://stackoverflow.com/questions/2126717/android-autocompletetextview-show-suggestions-when-no-text-entered
showDropDown()方法的执行并不总是有效的,我这边同样的代码:defy android2.3上可以显示;
note2 的android4.1 系统就不能够显示下拉框;
/** * <p>Specifies the minimum number of characters the user has to type in the * edit box before the drop down list is shown.</p> * * <p>When <code>threshold</code> is less than or equals 0, a threshold of * 1 is applied.</p> * * @param threshold the number of characters to type before the drop down * is shown * * @see #getThreshold() * * @attr ref android.R.styleable#AutoCompleteTextView_completionThreshold */
这时我们可以创建一个类 继承AutoCompleteTextView,覆盖enoughToFilter,让其一直返回true就行。 然后再主动调用showDropDown方法, 就能在不输入任何字符的情况下显示下拉框。
package com.wole.android.pad.view; import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; import android.widget.AutoCompleteTextView; /** * Created with IntelliJ IDEA. * User: denny * Date: 12-12-4 * Time: 下午2:16 * To change this template use File | Settings | File Templates. */ public class InstantAutoComplete extends AutoCompleteTextView { private int myThreshold; public InstantAutoComplete(Context context) { super(context); } public InstantAutoComplete(Context context, AttributeSet attrs) { super(context, attrs); } public InstantAutoComplete(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean enoughToFilter() { return true; } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(focused, direction, previouslyFocusedRect); if (focused) { performFiltering(getText(), 0); showDropDown(); } } public void setThreshold(int threshold) { if (threshold < 0) { threshold = 0; } myThreshold = threshold; } public int getThreshold() { return myThreshold; } }
searchSuggestionAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, new ArrayList<String>(5)); search_et.setAdapter(searchSuggestionAdapter); search_et.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) { if (s.length() >= 1) { if (fetchSearchSuggestionKeywordsAsyncTask != null) { fetchSearchSuggestionKeywordsAsyncTask.cancel(true); } fetchSearchSuggestionKeywordsAsyncTask =new FetchSearchSuggestionKeywordsAsyncTask(); fetchSearchSuggestionKeywordsAsyncTask.execute(); }else{ showHotSearchKeywords(); } } }); search_et.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String item = searchSuggestionAdapter.getItem(position); search_et.setText(item); search_btn.performClick(); } }); //点击autocompletetextview时,如果没有输入任何东西 则显示默认列表 search_et.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (TextUtils.isEmpty(search_et.getText().toString())) { showHotSearchKeywords(); } return false; } });
//这里发现很奇怪的事情, 需要每次new一个ArrayAdapter,要不然有时调用showDropDown不会有效果 private void showHotSearchKeywords() { MiscUtil.prepareHotSearchKeywords(getWoleApplication()); searchSuggestionAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, getWoleApplication().hotSearchHistoryKeywords); search_et.setAdapter(searchSuggestionAdapter); searchSuggestionAdapter.notifyDataSetChanged(); search_et.showDropDown(); } private class FetchSearchSuggestionKeywordsAsyncTask extends AsyncTask<Void, Void, List<String>> { @Override protected List<String> doInBackground(Void... params) { List<String> rt = new ArrayList<String>(5); String keyword = search_et.getText().toString(); if (!TextUtils.isEmpty(keyword)) { try { String result = NetworkUtil.doGet(BaseActivity.this, String.format(Global.API_SEARCH_SUGGESTIOIN_KEYWORDS, URLEncoder.encode(keyword, "utf-8")), false); Log.i("FetchSearchSuggestionKeywordsAsyncTask", result); if (!TextUtils.isEmpty(result)) { JSONArray array = new JSONArray(result); for (int i = 0; i < array.length(); i++) { JSONObject jsonObject = array.getJSONObject(i); rt.add(jsonObject.optString("keyword")); } } } catch (Exception e) { e.printStackTrace(); } } return rt; } @Override protected void onPostExecute(List<String> strings) { super.onPostExecute(strings); if (!strings.isEmpty()) { //这里发现很奇怪的事情, 需要每次new一个ArrayAdapter,要不然有时调用showDropDown不会有效果 searchSuggestionAdapter = new ArrayAdapter<String>(BaseActivity.this, android.R.layout.simple_dropdown_item_1line, strings); search_et.setAdapter(searchSuggestionAdapter); searchSuggestionAdapter.notifyDataSetChanged(); } } }
ref:http://stackoverflow.com/questions/2126717/android-autocompletetextview-show-suggestions-when-no-text-entered
评论
4 楼
michaelye1988
2014-07-13
thanks!终于找到答案了,困扰了很久,原来是要new 一个适配器,notifyDataSetChange没有效果,这坑爹货。
3 楼
gaobq
2013-10-15
tn0521 写道
似乎没有那么麻烦,给AutoCompleteTextView的对象加上一个setOnTouchListener,showDropDown()即可,代码如下
completeTextView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
completeTextView.showDropDown();//显示下拉列表
return false;
}
});
completeTextView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
completeTextView.showDropDown();//显示下拉列表
return false;
}
});
showDropDown()方法的执行并不总是有效的,我这边同样的代码:defy android2.3上可以显示;
note2 的android4.1 系统就不能够显示下拉框;
2 楼
tn0521
2013-07-29
似乎没有那么麻烦,给AutoCompleteTextView的对象加上一个setOnTouchListener,showDropDown()即可,代码如下
completeTextView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
completeTextView.showDropDown();//显示下拉列表
return false;
}
});
completeTextView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
completeTextView.showDropDown();//显示下拉列表
return false;
}
});
1 楼
tn0521
2013-07-29
似乎没有那么麻烦,给AutoCompleteTextView的对象加上一个setOnTouchListener,showDropDown()即可,代码如下
completeTextView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
completeTextView.showDropDown();//显示下拉列表
return false;
}
});
completeTextView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
completeTextView.showDropDown();//显示下拉列表
return false;
}
});
发表评论
-
安卓各种长知识的技术文章,不断更新
2015-10-27 18:24 752http://blog.udinic.com/2015/09 ... -
发现一个android sdk更新神速的镜像
2015-09-02 11:26 887mirrors.dormforce.net:80 //(栋力无 ... -
gradle项目中怎么集中管理你的依赖库
2015-08-16 11:30 686项目结构 引用root --gradleScript ... -
使用Dexposed为你的安卓应用加上在线修复的能力。
2015-08-11 16:15 6089移动客户端应用相对于W ... -
解决android-Ultra-Pull-To-Refresh下拉刷新组件中嵌套ViewPager的一个bug
2015-08-02 00:15 17008在项目中使用了android-Ultra-Pull-To-Re ... -
android有质量的面试题
2015-03-17 14:31 880https://github.com/android-cn/i ... -
提高Android Studio的gradle编译速度。
2015-03-12 14:12 4371发现用Android Studio的make和直接使用comm ... -
gradlew wrapper使用下载到本地的gradle.zip文件安装。
2015-03-12 01:26 15365使用gradlew来build项目时,有时候老是需要下载gra ... -
gradlew wrapper设置代理下载gradle
2015-02-27 18:25 44981. HTTP Only Proxy configuratio ... -
认识mqtt
2015-01-30 11:43 1054http://www.hivemq.com/mqtt-esse ... -
Google的Android性能模式
2015-01-14 14:44 710http://www.infoq.com/cn/news/20 ... -
反对Fragment的理由,顺便叫你如果创建自己的自定义view
2014-12-18 17:08 1081下面这篇文章讲了反对Fragment的理由,顺便叫你如果创建自 ... -
获取status bar的高度
2014-12-16 19:52 1276public static int getStatus ... -
最新的appCompat support library中,actionbar的自定义view不能占用全部的宽度
2014-12-02 23:22 899<style name="AppTheme&q ... -
ScrollTricks实现StickHeader效果
2014-11-06 19:07 1082https://code.google.com/p/roman ... -
AppCompat v21 — Material Design for Pre-Lollipop Devices!
2014-10-23 11:03 842http://android-developers.blogs ... -
国内Android Sdk Manager不能更新的问题。
2014-09-15 15:49 917加hosts 引用203.208.46.146 dl.goo ... -
在Centos上安装android sdk遇到的问题。
2014-09-15 12:00 1350安装好android sdk后, 打包时老是会有下面的问题。 ... -
Android的一些制作图表按钮的工具
2014-09-09 16:36 1488Android Button Maker Android P ... -
DESIGNER'S GUIDE TO DPI
2014-08-29 14:37 439强烈建议美工看看, 对于移动app的多密度屏幕的支持 http ...
相关推荐
AutoCompleteTextView 显示更多
AutoCompleteTextView按照关键字从服务器上获得数据显示下拉列表
扩展Android系统自带的AutoCompleteTextView控件,逐字提示,支持自定义类对象指定显示字段
Android AutoCompleteTextView控件学习 博客地址:http://blog.csdn.net/csdnyuandaimaxuexi/article/details/48439951
AutoCompleteTextViewDemo,实现显示历史记录功能。
本Demo展示了Android项目中AutoCompleteTextView以及MultiAutoCompleteTextView的简单使用,对其进行属性设置,以及数据填充。
Android自定义AutoCompleteTextView
AutoCompleteTextView汉字和拼音关联,可以输入汉字和拼音查询
Android2.3版 autocompleteTextview控件使用 源代码
AutoCompleteTextView自动完成文字输入 连接:http://i.cnblogs.com/EditPosts.aspx?opt=1
用AutoCompleteTextView实现中文和拼音关联自动提示
autoCompleteTextView自定义BaseAdapter,实现下拉单的自定义样式,用sqlite数据库存放历史记录,进行写入时提示。点击某个下拉单写入autoCompleeTextView中。
实现工具Android studio,一般AutoCompleteTextView提示语列表的适配器只能系统提供的ArrayAdapter等,这里自定义适配器继承了BaseAdapter。
只是一个很简单的例子,用autocompletetextview自动匹配姓名,在通讯录中查找,找到后点击会在下面的一个textview中显示出电话号码,适合初学者
AutoCompleteTextView大多是采用ArrayAdapter进行适配的,这种有时候并不能满足我们的需求,所以就有了这个demo
AutoCompleteTextView+SQLite实现自动检索