Android: ListFragment: Comment faire pour actualiser la liste
J'ai un affichage de la liste qui est affichée sur un fragment. J'ai un bouton au bas de l'écran lorsqu'il est pressé, fera appel à un webservice pour reteive de données supplémentaires. Si il y a des données supplémentaires, j'ai besoin de l'ajouter à la liste d'affichage. J'ai cherché sur ce forum et de nombreux autres sites web d'essayer et de trouver comment le faire, mais je n'ai eu aucun succès. Toute aide est très appréciée.
Je suis en train de penser j'ai besoin d'ajouter le fragment dyncamically au lieu de l'avoir définie sur le code XML suivant de mise en page.
Je suis à l'aide d'un ListFragment pour gonfler une vue de liste sur l'écran.
J'ai un écran avec deux fragments. Le XML pour l'écran ci-dessous: -
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal" >
<fragment
android:name="atos.mobilereporting.com.ReportList"
android:layout_width="323dp"
android:layout_height="match_parent" />
<fragment
android:name="atos.mobilereporting.com.ReportDetail"
android:layout_width="958dp"
android:layout_height="match_parent" />
</LinearLayout>
<Button
android:id="@+id/getReports"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Refresh Mobile Reports" />
</LinearLayout>
Le code pour gonfler la vue est ci-dessous: -
public class ReportList extends ListFragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Get list of reports...
repList = ReportDefinitionFactory.buildReportList(3);
activity = getActivity();
ListAdapter la = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1,
ReportDefinitionFactory.getReportDescriptions(repList));
setListAdapter(la);
}
}
Ce code montre un simple affichage de la liste avec les 3 lignes sur elle.
C'est à ce point, je dois arrêter car je ne sais pas aller à partir d'ici. J'ai le code qui va ajouter une ligne supplémentaire dans le tableau est utilisé pour la création initiale de l'affichage de la liste, mais je ne sais pas comment je peux invoquer une actualisation de la liste.
Grâce
Martin
OriginalL'auteur Martin Shinks | 2012-11-19
Vous devez vous connecter pour publier un commentaire.
Vous devez appeler
la.notifyDataSetChanged()
pour forcer l'actualisation de la liste une fois que les données ont changé.Il suffit de remplacer ‘ListAdapter la = new ArrayAdapter‘ par ‘ArrayAdapter la = new ArrayAdapter‘
Les choses sont à la recherche de mieux, je suis maintenant rendu compte, je n'est pas le remplissage de mon tableau correctement. Merci pour vous aider avec les conseils.
OriginalL'auteur fiddler
Utiliser le ArrayAdapter
notifyDataSetChanged()
fonction.Ce pourrait être ajouté dans le ArrayAdapter, si c'est l'endroit où les données sont mises à jour. Sinon, ajoutez-le à la même zone que les appels
la.add()
.OriginalL'auteur PearsonArtPhoto