33import android .app .Activity ;
44import android .content .Context ;
55import android .graphics .drawable .Drawable ;
6+ import android .os .Build ;
67import android .support .v7 .widget .AppCompatAutoCompleteTextView ;
78import android .view .LayoutInflater ;
89import android .view .MotionEvent ;
@@ -38,6 +39,9 @@ public class MyAutocomplete extends LinearLayout {
3839 AutocompleteAdapter autocompleteAdapter ;
3940
4041 AutocompleteData autocompleteDataSelected ;
42+ Activity activity ;
43+ String defaultSelectedValue = null ;
44+ int defaultSelectedId = -1 ;
4145
4246 public static class Builder implements GeneralBuilder <Builder >, Cloneable {
4347 //required
@@ -156,6 +160,7 @@ public MyAutocomplete(Builder builder){
156160 super (builder .context , null , builder .defStyleAttr );
157161 this .title = builder .title ;
158162 this .context = builder .context ;
163+ this .activity = builder .activity ;
159164 if (builder .formViewResource != -1 ){
160165 this .view = LayoutInflater .from (context ).inflate (builder .formViewResource , null );
161166 }else {
@@ -170,29 +175,37 @@ public MyAutocomplete(Builder builder){
170175 for (AutocompleteData items : builder .item ){ //show all but hidden item
171176 if (!items .isHidden ()) this .itemDropDown .add (items );
172177 }
173- autocompleteAdapter = new AutocompleteAdapter (builder .activity ,
178+
179+ if (builder .formLayout !=null ){
180+ this .formLayout = builder .formLayout ;
181+ this .formLayout .addView (this .view );
182+ }
183+
184+ this .defaultSelectedValue = builder .defaultSelectedValue ;
185+ this .defaultSelectedId = builder .defaultSelectedId ;
186+
187+ setAdapter ();
188+
189+
190+ // autoCompleteTextView.setOnFocusChangeListener((v, hasFocus) -> {
191+ // if(hasFocus)
192+ // autoCompleteTextView.showDropDown();
193+ // });
194+
195+ }
196+
197+ private void setAdapter (){
198+ autocompleteAdapter = new AutocompleteAdapter (this .activity ,
174199 R .layout .row_autocomplete , this .itemDropDown );
175- autoCompleteTextView .setThreshold (1 );
176200 autoCompleteTextView .setAdapter (autocompleteAdapter );
201+ autoCompleteTextView .setThreshold (1 );
177202 autoCompleteTextView .setOnItemClickListener ((parent , view , position , id ) -> autocompleteDataSelected = item .get (position ));
178- if (builder . defaultSelectedValue != null ){
179- setValue (builder . defaultSelectedValue );
203+ if (defaultSelectedValue != null ){
204+ setValue (defaultSelectedValue );
180205 }
181- if (builder .defaultSelectedId != -1 ){
182- setId (builder .defaultSelectedId );
183- }
184- if (builder .formLayout !=null ){
185- this .formLayout = builder .formLayout ;
186- this .formLayout .addView (this .view );
206+ if (defaultSelectedId != -1 ){
207+ setId (defaultSelectedId );
187208 }
188- autoCompleteTextView .setOnFocusChangeListener ((v , hasFocus ) -> {
189- if (hasFocus )
190- autoCompleteTextView .showDropDown ();
191- });
192- autoCompleteTextView .setOnTouchListener ((v , event ) -> {
193- autoCompleteTextView .showDropDown ();
194- return false ;
195- });
196209 autoCompleteTextView .setOnFocusChangeListener ((v , hasFocus ) -> {
197210 if (!hasFocus ){
198211 boolean found = false ;
@@ -215,6 +228,10 @@ public MyAutocomplete(Builder builder){
215228 }
216229 }
217230 });
231+ autoCompleteTextView .setOnTouchListener ((v , event ) -> {
232+ autoCompleteTextView .showDropDown ();
233+ return false ;
234+ });
218235 }
219236
220237 public interface OnSelectedListener {
@@ -261,6 +278,12 @@ public void setId(int id){
261278 }
262279 }
263280
281+ public AutocompleteData getSelectedData (){
282+ if (this .view .getVisibility () == View .VISIBLE && autocompleteDataSelected != null ) {
283+ return autocompleteDataSelected ;
284+ } else return null ;
285+ }
286+
264287 public String getSelectedValue (){
265288 if (this .view .getVisibility () == View .VISIBLE && autocompleteDataSelected != null ) {
266289 return autocompleteDataSelected .getValue ();
@@ -365,7 +388,9 @@ public void updateListDropdown(ArrayList<AutocompleteData> data){
365388 for (AutocompleteData items : data ) { //show all but hidden item
366389 if (!items .isHidden ()) this .itemDropDown .add (items );
367390 }
368- autocompleteAdapter .notifyDataSetChanged ();
391+ // autocompleteAdapter.updateListDropdown(data);
392+ // autocompleteAdapter.notifyDataSetChanged();
393+ setAdapter ();
369394 }
370395 }
371396}
0 commit comments