Same problem here.
Any solution ?

I've tried to add
textView.performValidation();
textView.showDropDown();

but it does not display drop down.

On Nov 4, 6:42 pm, Tim <[email protected]> wrote:
> I've posted this in a couple of places without any help so hopefully
> this group has some helpful people :)
>
> I have an AutoCompleteTextView which I want to populate with artist
> names based on what the user types.
>
> The problem is that I have a thread for retrieving the names from
> a web service, but when I try and update the ArrayAdapter with a
> Handler on the
> UI thread (which is called from the web service thread), nothing gets
> updated on screen.
> When I type another letter though, then the previous results from web
> service are displayed in the autocompletetextview rather than the
> latest.
>
> 1) Type 'abc'
> 2) Web Service gets 'abc1', 'abc2' and 'abc3' and calls Handler to
> notify GUI thread
> 3) Set 'abc1', 'abc2' and 'abc3' on adapter using adapter.add(str)
> 4) Call notifyDataSetChanged()
> 5) Nothing changes on GUI :(
> 6) Type another letter so textview reads 'abc1'
> 7) Web Service retrieves 'abc1x', 'abc1y' and 'abc1z' and calls
> Handler to notify GUI thread
> 8) Set 'abc1x', 'abc1y' and 'abc1z' results on the adapter
> 9) Call notifyDataSetChanged()
> 10) GUI now shows 'abc1' (From step 3)
>
> Here is my code:
>
> public void onCreate(Bundle savedInstanceState) {
> ...
>                 AutoCompleteTextView actv = (AutoCompleteTextView)
> findViewById
> (R.id.artist_search_text_edit);
>                 actv.addTextChangedListener(textWatcher);
>                 adapter = new ArrayAdapter<String>(this,
> android.R.layout.simple_dropdown_item_1line, new ArrayList<String>());
>                 actv.setAdapter(adapter);
>
>         }
>
> TextWatcher textWatcher = new TextWatcher() {
>
>                 @Override
>                 public void onTextChanged(CharSequence s, int start,
> int before, int
> count) {
>                         Thread t = new Thread() {
>                                 public void run() {
>                                         ArrayList<String> names =
> (ArrayList<String>) getArtistStrings
> (getInput());
>                                         artistNames = names;
>                                         messageHandler.sendEmptyMessage
> (0);
>                                 }
>                         };
>                         t.start();
>                 }
>
>                 @Override
>                 public void beforeTextChanged(CharSequence s, int
> start, int count,
> int after) {
>                 }
>
>                 @Override
>                 public void afterTextChanged(Editable s) {
>                 }
>         };
>
> private String getInput() {
>                 EditText artistInput = (EditText) findViewById
> (R.id.artist_search_text_edit);
>                 String artistSearchString = artistInput.getText
> ().toString();
>                 return artistSearchString;
>         }
>
> private void updateTextAdapter(List<String> data) {
>                 adapter.clear();
>                 for (String artistName : data) {
>                         adapter.add(artistName);
>                 }
>                 adapter.notifyDataSetChanged();
>         }
>
>         private Handler messageHandler = new Handler() {
>
>                 @Override
>                 public void handleMessage(Message msg) {
>                         updateTextAdapter(artistNames);
>                 }
>
>         };

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to