Question de syntaxe AsyncTask
Bonjour,
J'essaye plutôt que de faire x classes internes et x appels d'exécution une boucle qui gèrerait le tout.
J'ai donc ma boucle for (qui j'espère fonctionnera correctement ^^):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| for (int i = 0; (i < buttonId.length); i++){
buttonMap[i] = (Button) v.findViewById(buttonId[i].getResId());
listViewMap[i] = (ListView) v.findViewById(listViewId[i].getResId());
listViewMap[i].setVisibility(View.GONE);
arrayAdapterMap[i] = new ArrayAdapter<String>(this.getActivity(), arrayAdapterId[i].getResId(), mData[i]);
buttonMap[i].setOnClickListener(new MyListViewListener(listViewMap[i]));
listViewMap[i].setAdapter(arrayAdapterMap[i]);
listViewMap[i].setOnItemClickListener(new MyListViewItemListener(mData[i], getActivity()));
new AsyncDownload().execute(urlView1, "periode", "allPeriode", mData[i]);
} |
La dernière ligne de celle-ci appel les tâches asynchrones pour chaque liste que j'ai créé dans ma boucle.
Et donc je fais une classe (externe), déjà là apparemment le .execute n'est plus toléré.
Ce que j'aimerais savoir c'est quelle syntaxe je dois utiliser pour passer mes tableau en paramètre pour que cela ne provoque plus d'erreur dans ma classe:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public class AsyncDownload extends AsyncTask<String, Void, List<String>> {
public HttpConnexion mHttpConnexion = new HttpConnexion();
public InputStream mInputStream;
@Override
protected List<String> doInBackground(String... params) {
// TODO Auto-generated method stub
String url = params[0];
String key= params[1];
String periode = params[2];
List<String> mData = (List<String>) params[3];
mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
String res = mHttpConnexion.convertToString(mInputStream);
mData = mHttpConnexion.parseJsonFile(res);
return mData;
}
@Override
protected void onPostExecute(List<String> result) {
super.onPostExecute(result);
if (result != null){
mData=result;
mAdapter.clear();
for (String str : result){ //for i:0; i<mData.size(); i++ ==> String str = mData.get(i) // Ligne modifiée
mAdapter.add(str);
}
mAdapter.notifyDataSetChanged();
}
}
} |
Ici ça serait mData et mAdapter.
Une seconde question pour une classe onItemClickListener, le startActivity n'est pas reconnu con plus et il me demande de créer une méthode (mais je ne vois pas ce que je dois mettre dedans:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public class MyListViewItemListener implements OnItemClickListener {
private List<String> list;
private FragmentActivity fragmentActivity;
public MyListViewItemListener(List<String> list, FragmentActivity activity) {
// TODO Auto-generated constructor stub
this.list = list;
this.fragmentActivity = fragmentActivity;
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
String choix = list.get(position);
Bundle mObjetBundle = new Bundle(); //Permet de passer un paramètre à l'autre activité
mObjetBundle.putString("choix", choix);
Intent t = new Intent(fragmentActivity, Tableau.class); //permet d'appeler la nouvelle activité
t.putExtras(mObjetBundle);
startActivity(t);
}
private void startActivity(Intent t) {
// TODO Auto-generated method stub
}
} |
Voilà en espérant que vous serez m'aider ^^