Ne peut pas résoudre méthode .runOnUiThread
J'ai trouvé cette exemple ici sur la façon d'utiliser le runOnUiThreaed
méthode, mais je ne comprends pas comment l'utiliser.
J'configuration de la liste de l'adaptateur dans mon activité principale
//Set a gobal reference to the list adapter and the list respectivly
ListAdapter listAdapter;
static ArrayList<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//some code
adapter = new ListAdapter(getActivity(), R.layout.item_layout, list);
listView.setAdapter(adapter);
//some code
}
J'ai la liste de l'adaptateur ici d'appeler un service de classe de gestionnaire
public class ListAdapter {
//some code
ServiceHandler sh = new ServiceHandler();
sh.run();
}
Ici est .run()
méthode dans ServiceHandler
classe où j'ai mis à jour la liste et de la liste de l'adaptateur
public void run(Adapter listAdapter, ArrayList<String> list){
//some code
list[0] = "foo";
listAdapter.notifyDataSetChanged;
}
Mais j'ai cette erreur au moment de l'exécution
Seul le thread qui a créé un point de vue de la hiérarchie peut toucher son point de vue.
J'ai donc essayer de résoudre l'erreur avec .runOnUiThread
Voici donc .run()
méthode dans ServiceHandler
classe à nouveau, avec runOnUiThread
public void run(Adapter listAdapter, ArrayList<String> list){
//some code
runOnUiThread(new Runnable() {
@Override
public void run() {
list[0] = "foo";
listAdapter.notifyDataSetChanged;
});
}
Mais je reçois
Ne peut pas résoudre la méthode 'runOnUiThread(anonyme Java.lang.runnable)'
OriginalL'auteur the_prole | 2015-11-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez déplacer le service gestionnaire comme privé membre de la classe à l'intérieur de votre activité comme ci-dessous pour utiliser l'Activité ce contexte.
EDIT:
Et puis instancier dans votre activité de ce genre:
Dans ce cas, vous pouvez passer la référence de votre activité dans ServiceHandler du constructeur. Voir mon montage ci-dessus.
Ce n'
private final Activity mActivity;
veux dire?finale privée les marques les membres privés final, ce qui signifie qu'ils ne peuvent pas être ré-attribué ailleurs le constructeur.
OriginalL'auteur Vaibhav Pandey