0

I load dynamically the string of my autocomplete with JSON objects, but the list appears only in the next character; How can I make my list appear exactly after the loading?

This process is called from a onTextChanged event. I tried to force display with showDropDown() but didn't work!!!

Any help?

public class HttpConnectionApiActivity extends Activity implements HttpListner, TextWatcher {
.....
AutoCompleteTextView from_txt;
List<String> country_List;
ArrayAdapter<String> adapter;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 from_txt = (AutoCompleteTextView) findViewById(R.id.from_txt);
    //from_txt.setThreshold(1);
    prepareCountryList();
    from_txt.addTextChangedListener( this);
    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,country_List);
    from_txt.setAdapter(adapter);
}
....
public void notifyHTTPRespons(final HttpHandler http) {
public void run() {
String result = http.getResponse();

try {
    adapter.clear();

    for (int i = 0; i < results_Array.length(); i++) {
        JSONObject row = results_Array.getJSONObject(i);
        String name=row.getString("name");
        adapter.add(name);
    }
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}
Racil Hilan
  • 24,690
  • 13
  • 50
  • 55
bourax webmaster
  • 748
  • 7
  • 18

1 Answers1

0

I could display the dropdown list by adding these 2 lines : It's very simple hack by resetting text when you get updated data.

    try {
    adapter.clear();

    for (int i = 0; i < results_Array.length(); i++) {
        JSONObject row = results_Array.getJSONObject(i);
        String name=row.getString("name");
        adapter.add(name);
    }
    //____________________
    adapter.notifyDataSetChanged();
    from_txt.setText(from_txt.getText());
    //____________________
    } catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
bourax webmaster
  • 748
  • 7
  • 18