2012-11-19 17 views
9

Mam widok listy, który jest wyświetlany na fragmencie. Mam przycisk u dołu ekranu, na którym po naciśnięciu wywoła serwis internetowy, aby ponownie wprowadzić dodatkowe dane. Jeśli są dodatkowe dane, muszę dodać je do widoku listy. Przeszukałem to forum i wiele innych stron internetowych, aby spróbować i dowiedzieć się, jak to zrobić, ale nie odniosłem sukcesu. Każda pomoc jest doceniana.Android: ListFragment: Jak odświeżyć listę

Teraz myślę, że muszę dodać fragment dyncamically zamiast go zdefiniować w następującym układzie XML.

Używam ListFragment do nadmuchania widoku listy na ekranie.

Mam na ekranie ekran z dwoma fragmentami. XML na ekranie jest poniżej: -

<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> 

Kod nadmuchać pogląd jest poniżej: -

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); 

     } 

    } 

Kod ten pokazuje prosty widok listy z 3 wierszy na nim.

To w tym momencie muszę się zatrzymać, ponieważ nie wiem, dokąd się udał. Mam kod, który doda dodatkowy wiersz do tablicy, która jest używana do początkowego budowania widoku listy, ale nie wiem, w jaki sposób mogę wywołać odświeżenie w widoku listy.

Dzięki

Martin

Odpowiedz

14

Trzeba zadzwonić la.notifyDataSetChanged() wymusić odświeżenie listy, gdy dane uległy zmianie.

+0

Cześć, mówi, że metoda notifyDataSetChanged jest niezdefiniowana dla typu ListAdapter. –

+2

Po prostu zamień "ListAdapter la = new ArrayAdapter" przez "ArrayAdapter la = new ArrayAdapter" – fiddler

+0

Rzeczy wyglądają lepiej, teraz zrozumiałem, że nie zapełniam mojej tablicy correclty. Dzięki za pomoc w udzieleniu porady. –

2

Użyj funkcji ArrayAdapter notifyDataSetChanged().

Można to dodać w ArrayAdapter, jeśli jest to lokalizacja, w której dane są aktualizowane. W przeciwnym razie dodaj go do tego samego obszaru, który wywołuje la.add().

Powiązane problemy