Désolé, ma dernière question n'a pas été correctement formulée. Donc, je supprime le contenu et reformule ma question.Android Impossible d'exécuter le thread utilisateur setListAdapter()
J'ai aimé @ChrisBunney répondre à ma question avec un exemple pour traiter l'image dans un autre fil.
est ici le bon code ci-dessous
public class TestActivity extends ListActivity {
int count =0;
List<String> listString = null;
String[] mString = null;
private RefreshHandler mRedrawHandler = new RefreshHandler();
class RefreshHandler extends Handler {
@Override
public void handleMessage(Message msg) {
TestActivity.this.updateUI();
}
public void sleep(long delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
private void updateUI(){
mRedrawHandler.sleep(1000);
listString.add("Test "+count++);
String[] mString = new String[listString.size()];
int i = 0;
for(String string : listString){
mString[i++]= string;
}
if(null != mString && mString.length>0)
setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,mString));
}
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
listString = new LinkedList<String>();
updateUI();
}
}
Ce que je compte faire est la mise à jour de l'interface utilisateur d'appel d'un autre fil.
Ce sera la modification de mon fichier de code ci-dessus.
private class HelperClass implements Runnable{
public void run() {
performSomeCalculation();
}
/*
* This code will populate the list as it is executed.
* As and when there is a new element in the list the UI is updated.
*/
public void performSomeCalculation(){
//update list String
updateUI();
}
/*
/*
*
* The new update onCreate method calling another thread that populates the UI thread
*
*/
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
listString = new LinkedList<String>();
//updateUI();
Thread thread = new Thread(new HelperClass());
thread.start();
}
Vous pouvez voir dans le code ci-dessus, j'ai créé un helperClass pour effectuer des calculs, comme et quand il est ouput du calcul du fil, il doit mettre à jour le thread d'interface utilisateur.
Je travaille dessus pour le faire fonctionner, si quelqu'un découvre plz mettre à jour mon post.
Merci d'avance.
Il y a beaucoup d'erreurs dans votre code ... par ex. @override au lieu de @overriding. Votre méthode onCreate() n'est pas publique et n'a pas de valeur de retour. Vous appelez hread.start() au lieu de thread.start() ..... comment l'exécutez-vous ???? – RoflcoptrException
Dans ma réponse, j'explique comment utiliser un gestionnaire pour mettre à jour l'interface utilisateur à partir d'un thread différent, mais je ne suis pas sûr de ce que vous essayez d'obtenir avec ce code, donc je ne sais pas si cela résout votre problème. Pouvez-vous expliquer ce que vous essayez d'accomplir? – chrisbunney
Si votre vue de liste a un contenu statique, vous pouvez également définir l'adaptateur de liste dans le remplacement onCreate, sinon, la réponse de Chris se chargera de l'exception. –