Skip to content

Commit 4bcbf42

Browse files
committed
fix update dropdown data
1 parent 9c0ff4a commit 4bcbf42

4 files changed

Lines changed: 62 additions & 20 deletions

File tree

app/src/main/java/com/paperplay/androidformbuilder/ExampleJavaActivity.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,11 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
133133
+ " Zip: " + edtMultiple.getValue("Zip")
134134
+ " City: " + spinCity.getSelectedValue() +" - "+spinCity.getSelectedId()+" - "+spinCity.getSelectedSecondaryId()
135135
+ " Education: "+myCheckboxView.getAllChecked()
136-
+ " Autocomplete: "+myAutocomplete.getSelectedValue()+" "+myAutocomplete.getSelectedId()))
136+
+ " Autocomplete: "+myAutocomplete.getSelectedValue()+" "+myAutocomplete.getSelectedData().toString()))
137137
.setText("Sumbit").create();
138138
button.getView();
139139

140+
140141
}catch (CloneNotSupportedException e){
141142
e.printStackTrace();
142143
}

myformbuilder/src/main/java/com/paperplay/myformbuilder/adapter/AutocompleteAdapter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ public AutocompleteAdapter(@NonNull Activity activity, int resource, ArrayList<A
3232
suggestions = new ArrayList<>();
3333
}
3434

35+
public void updateListDropdown(ArrayList<AutocompleteData> dataList){
36+
this.dataList = dataList;
37+
tempDataList.clear();
38+
tempDataList.addAll(dataList);
39+
}
40+
3541
@NonNull
3642
@Override
3743
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {

myformbuilder/src/main/java/com/paperplay/myformbuilder/model/AutocompleteData.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,14 @@ public boolean isHidden() {
5454
public void setHidden(boolean hidden) {
5555
this.hidden = hidden;
5656
}
57+
58+
@Override
59+
public String toString() {
60+
return "AutocompleteData{" +
61+
"id=" + id +
62+
", secondaryId='" + secondaryId + '\'' +
63+
", value='" + value + '\'' +
64+
", hidden=" + hidden +
65+
'}';
66+
}
5767
}

myformbuilder/src/main/java/com/paperplay/myformbuilder/view/MyAutocomplete.java

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.app.Activity;
44
import android.content.Context;
55
import android.graphics.drawable.Drawable;
6+
import android.os.Build;
67
import android.support.v7.widget.AppCompatAutoCompleteTextView;
78
import android.view.LayoutInflater;
89
import 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

Comments
 (0)