我想再androidDialog中使用 autocompletetext, 在开发测试过程中碰见不少问题,把最后的成品发布出来,避免大家走弯路,下面的代码是完整代码
详细代码如下

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 importandroid.app.Activity; importandroid.app.Dialog; importandroid.content.Context; importandroid.os.Bundle; importandroid.text.Editable; importandroid.text.TextWatcher; importandroid.view.Gravity; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.view.Window; importandroid.widget.AdapterView; importandroid.widget.AdapterView.OnItemClickListener; importandroid.widget.ArrayAdapter; importandroid.widget.AutoCompleteTextView; importandroid.widget.Button; importandroid.widget.EditText; importandroid.widget.ListView; publicclassMainActivityextendsActivity{ privatestaticContextcontext; ButtonokButton; publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); finalViewaddView=getLayoutInflater().inflate(R.layout.activity_main,null); context=this.getApplicationContext(); Buttonsearch=(Button)findViewById(R.id.btn_save); search.setOnClickListener(showSearch); } privateOnClickListenershowSearch=newOnClickListener() { publicvoidonClick(Viewv) { showDialogList(); } }; publicstaticContextgetAppContext(){ returnMainActivity.context; } staticfinalString[]COUNTRIES=newString[]{ "Afghanistan","Albania","Algeria","AmericanSamoa","Andorra", "Angola","Anguilla","Antarctica","AntiguaandBarbuda", "Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan", "Bahrain","Bangladesh","Barbados","Belarus","Belgium" }; privatevoidshowDialogList(){ finalDialogdialog=newDialog(this); Viewview=getLayoutInflater().inflate(R.layout.citylistview,null); ListViewlv=(ListView)view.findViewById(R.id.List); finalArrayAdapter<String>adapter=newArrayAdapter<String>(context,android.R.layout.simple_list_item_1,COUNTRIES); lv.setAdapter(adapter); AutoCompleteTextViewfilterText=(AutoCompleteTextView)view.findViewById(R.id.EditBox); filterText.setAdapter(adapter); dialog.setContentView(view); dialog.setCancelable(true); Windowwindow=dialog.getWindow(); window.setGravity(Gravity.CENTER); lv.setOnItemClickListener(newOnItemClickListener(){ @Override publicvoidonItemClick(AdapterView<?>parent,Viewview, intposition,longid){ } }); dialog.show(); filterText.addTextChangedListener(newTextWatcher(){ @Override publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){ //TODOAuto-generatedmethodstub } @Override publicvoidbeforeTextChanged(CharSequences,intstart,intcount, intafter){ //TODOAuto-generatedmethodstub } @Override publicvoidafterTextChanged(Editables){ adapter.getFilter().filter(s); } }); } }


citylistview.xml

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <AutoCompleteTextView android:id="@+id/EditBox" android:layout_width="wrap_content" android:layout_height="wrap_content" > </AutoCompleteTextView> <ListView android:id="@+id/List" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView> </LinearLayout>


CityListDialog.java

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 publicclassCityListDialogextendsDialogimplementsOnClickListener{ privateListViewlist; privateEditTextfilterText=null; ArrayAdapter<String>adapter=null; privatestaticfinalStringTAG="CityList"; publicCityListDialog(Contextcontext,String[]cityList){ super(context); setContentView(R.layout.citylistview); this.setTitle("SelectCity"); filterText=(EditText)findViewById(R.id.EditBox); filterText.addTextChangedListener(filterTextWatcher); list=(ListView)findViewById(R.id.List); adapter=newArrayAdapter<String>(context,android.R.layout.simple_list_item_1,cityList); list.setAdapter(adapter); list.setOnItemClickListener(newOnItemClickListener(){ @Override publicvoidonItemClick(AdapterView<?>a,Viewv,intposition,longid){ Log.d(TAG,"SelectedItemis="+list.getItemAtPosition(position)); } }); } publicvoidonClick(Viewv){ } privateTextWatcherfilterTextWatcher=newTextWatcher(){ publicvoidafterTextChanged(Editables){ } publicvoidbeforeTextChanged(CharSequences,intstart,intcount,intafter){ } publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){ adapter.getFilter().filter(s); } }; @Override publicvoidonStop(){ filterText.removeTextChangedListener(filterTextWatcher); } }


AutoCompleteTextView组件是一个可编辑的文本视图,能显示用户键入的相关信息。建议列表显示一个下拉菜单,用户可以从中选择一项,以完成输入。建议列表是从一个数据适配器获取的数据。它有3个重要的方法。
clearListSelection():清除选中的列表项。
dismissDropDown():如果存在关闭下拉菜单。
getAdapter():获取适配器。

更多相关文章

  1. 4.4以上android沉浸式
  2. Android(安卓)4.0.1_r1源代码发布,更新获取方法
  3. 6.1.5 GridView详解编辑
  4. Android中使用lambda表达式
  5. Android中JNI高级应用 - 本地C代码中创建Java对象及本地JNI对象
  6. Android培训班(31)
  7. android关闭整个应用程序
  8. android中获取string字符串的方法
  9. Android底部导航栏最常用的两种写法

随机推荐

  1. 初学Android快速上手经验(自我小结)
  2. 像SpringMVC一样在Android上做Web开发
  3. 如何从云端推送消息到手机 (Android(安卓
  4. Android(安卓)悬浮窗权限各机型各系统适
  5. Android系列之Android系列之如何成为Andr
  6. RN系列:RN使用Android原生控件或自定义组
  7. 个人开发者做一款Android(安卓)App,androi
  8. 关于android常用的按下高亮的展示
  9. Android 学习1----控件的学习
  10. Android的图形显示原理(GDI)一