`
endual
  • 浏览: 3579077 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android开发笔记-EditText自动补全功能(转)

 
阅读更多

 

Android开发笔记-EditText自动补全功能

分类: android 8人阅读 评论(0) 收藏 举报

项目开发之需要, 根据用户拼音或代码检索出用户信息. 现在有两种方法可以实现.

1. 使用android系统自带组件: AutoCompleteTextView .

效果图如下:

布局文件:

auto_textview.xml

 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.   
  8.      <TextView android:id="@+id/selection6"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"   />   
  11.      <AutoCompleteTextView android:id="@+id/editAuto"  
  12.         android:layout_width="fill_parent"  
  13.         android:layout_height="wrap_content"  
  14.         android:completionThreshold ="1" />  
  15.   
  16. </LinearLayout>  
 

 

 2. java代码:

public class AutoComplementTest extends Activity {

Java代码  收藏代码
  1.     private AutoCompleteTextView edit;  
  2.     private String[]  items={"lorem""ipsum""dolor""sit""amet""consectetuer""adipiscing""elit""morbi""vel""ligula""vitae""arcu""aliquet""mollis""etiam""vel""erat""placerat""ante""porttitor""sodales""pellentesque""augue""purus"};   
  3.       
  4.       
  5.     @Override  
  6.     protected void onCreate(Bundle savedInstanceState) {  
  7.           
  8.         super.onCreate(savedInstanceState);  
  9.           
  10.         setContentView(R.layout.auto_textview);  
  11.         edit = (AutoCompleteTextView)findViewById(R.id .editAuto);  
  12.         //步骤1:设置适配器   
  13.         edit.setAdapter (new ArrayAdapter<String>(this ,android.R.layout.simple_dropdown_item_1line ,items ));  
  14.         
  15.     }   
  16.   
  17. }  

 

此法的弊端: 不能根据字母拼音或代码检索, 只能根据返回的值自动补全, 拓展性不全.

 

 

方法二:

EditText和ListView组合成类似自动补全功能.

 

效果图如下:

 

 

布局文件代码:

 

Xml代码  收藏代码
  1. <EditText android:id="@+id/edit_key"  
  2.                             android:layout_width="fill_parent"  
  3.                             android:layout_height="32dip"  
  4.                             android:layout_marginLeft="2dip"  
  5.                             android:layout_marginTop="4dip"  
  6.                             android:layout_marginBottom="4dip"  
  7.                             android:paddingTop="8dip"  
  8.                             android:paddingBottom="4dip"  
  9.                             android:focusable="false"  
  10.                             android:layout_marginRight="12dip"  
  11.                             android:background="@drawable/qt_search_txt"  
  12.                             />  
  13.                         
  14.                           
  15.                         <ListView android:id="@+id/lstv_all"   
  16.                             android:layout_width="fill_parent"  
  17.                             android:layout_height="wrap_content" />  

 

java代码:

 

Java代码  收藏代码
  1. public class LoadableStockListActivity extends ListActivity{  
  2.    
  3.     private StringBuffer sb = new StringBuffer();   
  4.           
  5.     private EditText txtKey;  
  6.     private ListView listView;  
  7.       
  8.       
  9.     @Override  
  10.     protected void onCreate(Bundle savedInstanceState) {  
  11.           
  12.         super.onCreate(savedInstanceState);  
  13.         requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);  
  14.         setContentView(R.layout.loadable_stock_list_activity);  
  15.           
  16.            
  17.         foursquared = ((Foursquared)this.getApplication());  
  18.            
  19.         mEmptyProgress = (ProgressBar) findViewById(R.id.emptyProgress);  
  20.         mEmptyText = (TextView) findViewById(R.id.emptyText);  
  21.         setLoadingView();   
  22.           
  23.            
  24.         txtKey = (EditText)findViewById(R.id.edit_key);   
  25.                    
  26.         listView = (ListView)findViewById(R.id.lstv_all);  
  27.         //添加文本改变事件  
  28.         txtKey.addTextChangedListener(new TextWatcher() {  
  29.             @Override  
  30.             public void onTextChanged(CharSequence s, int start, int before, int count) {  
  31.                   
  32.                 key =  txtKey.getText().toString();  
  33.                 if(key!=null && !"".equals(key.trim())){  
  34.                     Log.i(TAG , " key:"+key);  
  35.                     List<Map<String , String>> lst = foursquared.getSelectStock(key);//根据关键字查询股票代码  
  36.                     StockListAdapter stockAdapter = new StockListAdapter(LoadableStockListActivity.this , lst);  
  37.                     listView.setAdapter(stockAdapter);  
  38.                 }else{  
  39.                     listView.setAdapter(null);  
  40.                 }  
  41.             }  
  42.               
  43.             @Override  
  44.             public void beforeTextChanged(CharSequence s, int start, int count,  
  45.                     int after) {  
  46.             }  
  47.               
  48.             @Override  
  49.             public void afterTextChanged(Editable s) {  
  50.                   
  51.             }  
  52.         });  
  53.           
  54.         //查询所有股票相关数据  
  55.         List<Map<String , String>> lst = foursquared.getSelectStock(null);  
  56.         //自定义ListView适配器  
  57.         StockListAdapter stockAdapter = new StockListAdapter(this , lst);  
  58.         //设置适配器  
  59.         listView.setAdapter(stockAdapter);  
  60. }  

 

  getSelectStock()方法详解:

Java代码  收藏代码
  1. /** 
  2.      * 获取股票代码信息列表 
  3.      * @return 
  4.      */  
  5.     public List<Map<String , String>> getSelectStock(String key){  
  6.           
  7.         stockDB.open();  
  8.         List<Map<String , String>> stocks = stockDB.selectStock(key);  
  9.         stockDB.close();  
  10.           
  11.         return stocks;  
  12.           
  13.     }  
  14.   
  15.   
  16. selectStock()方法详解:(欲了解stockDB具体代码,请参考: 上篇:android开发笔记-sqllite操作)  
  17.   
  18. public List<Map<String , String>> selectStock(String key){  
  19.           
  20.         if(!db.isOpen()){  
  21.             db = dbHelper.getReadableDatabase();  
  22.         }  
  23.           
  24.         List<Map<String , String>> stockList = new ArrayList<Map<String , String>>();  
  25.           
  26.         Cursor cur = null;  
  27.           
  28.         if(null!=key && !"".equals(key)){  
  29.   
  30.             //查询的列字段名  
  31.             String [] columns = {CODE , NAME , SIMPLE};  
  32.             //查询条件  
  33.             String where =  CODE+ " like ? or "+NAME+" like ? or "+SIMPLE+" like ? ";  
  34.             //查询参数  
  35.             String [] selectArgs = {key+"%" , key+"%" , key+"%"};   
  36.             //执行查询  
  37.             cur = db.query(DATABASE_TABLE, columns, where , selectArgs, nullnullnull);  
  38.               
  39.             cur.moveToFirst();  
  40.             //循环读取数据  
  41.             while(!cur.isAfterLast()){  
  42.                 Map<String , String> stockMap = new HashMap<String , String>();  
  43.                 String code =  cur.getString(0);  
  44.                 String name =  cur.getString(1)+"("+code+")";  
  45.                 stockMap.put("code" , code);  
  46.                 stockMap.put("name" , name);  
  47.                 stockList.add(stockMap);  
  48.                 cur.moveToNext();  
  49.             }  
  50.             cur.close();  
  51.             close();  
  52.             return stockList;  
  53.         }  
  54.         return null;  
  55.     }  
分享到:
评论

相关推荐

    Android代码-android-edittext-validator

    Android Form EditText Android form edit text is an extension of EditText that brings data validation facilities to the edittext. Example App I built an example app that showcase some of the ...

    android-edittext-validator-master.zip

    "android-edittext-validator-master.zip" 是一个专为Android平台设计的项目,专注于EditText组件的验证功能。这个项目提供了一种方便的方式来验证用户在EditText字段中输入的信息格式。 EditText是Android SDK中的...

    Android自动补全邮箱后缀的EditText

    通过以上步骤,我们就实现了一个功能完备的自定义EditText,它不仅具有自动补全邮箱后缀的功能,还能在输入过程中提供即时的反馈。这种设计能够减少用户输入错误,提高输入效率,提升应用的整体体验。在实际开发中,...

    安卓EditText输入框相关-Android框架chips-edittext-library.rar

    在`Android框架chips-edittext-library.rar`中,我们可以看到一个专门针对`EditText`的扩展库,它可能包含了一些增强`EditText`功能的实现,比如`ChipsEditText`,这种设计通常是为了提供更丰富的用户体验,例如在...

    Android--EditText的富文本组件

    在Android开发中,EditText是用于用户输入文本的基本控件,但有时我们可能需要更复杂的文本编辑功能,如插入图片、格式化文本等,这就是富文本编辑器的角色。本篇文章将详细探讨如何在Android中实现一个基于原生...

    Android代码-Android-EditText-Validations

    Android EditText Validations Easily Validate EditTexts This library is best used with Kotlin, and is to help reduce ...implementation 'com.github.thomhurst:Android-EditText-Validations:{version}' Us

    安卓EditText输入框相关-android-edittext-validator提供了内容验证的编辑框.rar

    需要注意的是,由于`android-edittext-validator`的兼容性和稳定性问题,可能存在某些功能在某些设备或Android版本上无法正常工作。因此,当使用这个库时,开发者需要对代码进行充分的测试和调整,确保在所有目标...

    【Android】实现搜索的自动补全功能

    在Android应用开发中,搜索功能是提升用户体验的关键一环,特别是自动补全功能,它可以极大地提高用户输入效率,降低操作难度。本篇文章将详细介绍如何在Android中实现搜索的自动补全功能。 首先,理解自动补全...

    Android-EditText-Validations,轻松验证编辑文本.zip

    这个开源项目"Android-EditText-Validations"正是为了解决这个问题而创建的。它提供了一种简单的方式来对`EditText`中的输入进行有效验证。 项目的核心在于它封装了一系列验证规则,使得开发者可以方便地应用到`...

    android-widget-keyboardless-edittext, 没有键盘显示的Android 所有编辑操作仍然工作.zip

    android-widget-keyboardless-edittext, 没有键盘显示的Android 所有编辑操作仍然工作 KeyboardlessEditText本机 Android,除非用户与它交互时不会出现键盘。 所有其他编辑操作仍然工作。用户仍然可以使用这个小部件...

    Android-Android-Prefix-Input为EditText添加prefix前缀模式

    在`bachors-Android-Prefix-Input-94c23be`这个压缩包中,包含了`Android-Prefix-Input`项目的源码,开发者可以深入研究其内部实现,以便更好地理解和定制化使用。源码的学习有助于我们理解如何扩展Android的UI组件...

    Android代码-pin-edittext

    pin-edittext An extension of EditText with pin style Usage Include PinCodeEditText in your layout XML android:maxLength: The total pin (Required to make PinEditText limit its length) ...

    android-EditText边框颜色

    在Android开发中,`EditText` 是一个非常常用的控件,用于接收用户输入文本。当我们需要对`EditText`的外观进行自定义,特别是调整其边框颜色时,这通常是UI设计需求的一部分,使得应用界面更加美观和个性化。本教程...

    Android代码-EditText的撤销和恢复

    &gt; 提取我正在做Markdown编辑器的一个功能 EditText的撤销和恢复撤销操作 使用 引入库 compile 'ren.qinc.edit:lib:0.0.5' 初始化 mEditText = ((EditText) findViewById(R.id.editText)); //创建PerformEdit,...

    Android-- EditText与InputFilter实现文本对比

    在Android开发中,`EditText`是用户输入文本的常见组件,而`InputFilter`则用于对用户在`EditText`中输入的内容进行过滤和格式化,确保输入的数据符合我们的需求。这篇博客“Android-- EditText与InputFilter实现...

    android 编辑框事件处理----EditText

    android:id="@+id/editText01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/app1_edittext01"/&gt; android:id="@+id/autoCompleteTextView01" android:...

    Android自定义控件-EditText(可用于登陆界面)

    在Android开发中,自定义控件是提升应用用户体验和界面设计独特性的重要手段。本教程将专注于自定义EditText控件,适用于登录界面。EditText作为Android系统中的基础输入组件,允许用户输入文本,但在某些场景下,...

    Android代码-EditText插入QQ表情源码.zip

    在Android开发中,EditText是用于用户输入文本的基本控件,而QQ表情的插入则涉及到UI交互的增强,使得用户能够更生动、直观地表达情感。这个"Android代码-EditText插入QQ表情源码.zip"文件很可能是提供了一种实现...

    Android代码-EditText显示icon

    IconEditText provides a reusable view for displaying an ImageView with an EditText for Android 4.0 . Usage Using the IconEditText is easy enough, just clone the repo and add it to your project as ...

    Android---UI篇

    •Android---UI篇---AutoCompleteTextView(自动提示) • •Android---UI篇---Toast(提示) • •Android---UI篇---Button(按钮) • •Android---UI篇---TextView(文本框) • •Android---UI篇---EditText...

Global site tag (gtag.js) - Google Analytics