Android Rafraîchissante Fragment Vue après AsyncTask
Je suis en train de mettre à jour la liste fragment lorsqu'un AsyncTask
dans mon activité se termine, mais je ne suis pas sûr si je fais quelque chose de mal. Actuellement, j'ai un bouton qui lance la AsyncTask
:
search = (Button)findViewById(R.id.search);
search.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
String productname = prodname.getText().toString().trim();
if (NetworkManager.isOnline(getApplicationContext())){
//Go to Other screen
AsyncFetcher results = new AsyncFetcher(currActivity);
String _url = "http://192.168.1.3:3000/search.json?
utf8=%E2%9C%93&q="+productname;
//progressDialog = ProgressDialog.show(
// ClassifiedsActivity.this, "", "Loading...");
results.execute(_url);
} else {
//Throw some warning saying no internet
//connection was found
}
}
});
Une fois mon exécution est fini j'ai suivantes pour instancier fragment au sein de mon activité:
ResultFragment resultfrag = new ResultFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, resultfrag).commit();
Cependant il ne semble pas pour remplacer mon contenu avec la liste fragment.
Voici mon fichier de mise en page:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
OriginalL'auteur user2352691 | 2013-05-05
Vous devez vous connecter pour publier un commentaire.
Premier remplacement d'un fragment n'est rien comme il rafraîchissante. Oui, il recharge chaque vue de la ti et des données. Mais vous devez le relier avec vos nouvelles données. Donc, je vous recommande de créer une méthode d'actualisation dans votre fragment et envoyer cette méthode à vos données actualisées, puis en informer votre adaptateur
dataSetChanged
.Pour ce faire, vous allez avoir besoin pour atteindre votre actuellement attaché fragment et appeler sa méthode refresh. Vous pouvez utiliser
findFragmentByTag
pour l'atteindre.Edit: Pour clarifier peu plus
Lorsque votre
AsyncTask
est fait, vous devriez faire quelque chose comme cecionPostExecute
méthode:Et dans votre
ResultFragment
vous avez besoin d'avoirrefreshData
méthode, qui est quelque chose comme ceci:Et votre liste sera actualisée à chaque fois que votre tâche est accomplie.
Ahh oui, bien sûr, dépend de la façon dont vous les manipulez avec listView et son adaptateur. Je suis heureux que vous l'avez fait 🙂
OriginalL'auteur yahya