J'écris après l'application:notifyDataSetChanged ne fonctionne pas?
- il y a un champ AutoCompleteTextView
- comme adaptateur J'utilise ArrayAdapter avec ListArray
- la ListArray se compose d'un certain élément de chaîne constante et un élément qui sera modifié de manière dynamique chaque utilisateur a tapé quelque chose dans le champ
J'ai pris TextChangedListener pour mettre à jour ce dernier élément de la liste. Mais il semble que cette mise à jour ne se produise qu'une seule fois.
J'ajoute un code de moi. Peut être quelqu'un peut me montrer, qu'est-ce que je fais mal.
public class HelloListView extends Activity
{
List<String> countryList = null;
AutoCompleteTextView textView = null;
ArrayAdapter adapter = null;
static String[] COUNTRIES = new String[]
{
"Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
"Yemen", "Yugoslavia", "Zambia", "Zimbabwe", ""
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
countryList = Arrays.asList(COUNTRIES);
textView = (AutoCompleteTextView) findViewById(R.id.edit);
adapter = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, countryList);
adapter.notifyDataSetChanged();
textView.setAdapter(adapter);
textView.setThreshold(1);
textView.addTextChangedListener(new TextWatcher()
{
public void onTextChanged(CharSequence s, int start, int before, int count)
{
countryList.set(countryList.size()-1, "User input:" + textView.getText());
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after)
{
}
public void afterTextChanged(Editable s)
{
}
});
new Thread()
{
public void run()
{
// Do a bunch of slow network stuff.
update();
}
}.start();
}
private void update()
{
runOnUiThread(new Runnable()
{
public void run()
{
adapter.notifyDataSetChanged();
}
});
}
}
Vous ne savez pas pourquoi ce que vous avez ne fonctionne pas, mais avez-vous envisagé d'utiliser AsyncTask pour effectuer vos tâches réseau? Il vous donne un moyen facile de travailler sur un autre thread, puis faire un peu de travail sur le thread de l'interface utilisateur lors de son doen. http://developer.android.com/reference/android/os/AsyncTask.html –
Mais si vous regardez mon exemple, il n'y a pas du tout de réseau. J'ai les données de ArrayList déjà dans le code. – Tima
a essayé votre suggestion. Cela ne fonctionne pas – Tima