2015-03-02 5 views
5

chcę mieć ikonę ładowania, który jest wyświetlany na górze gdzie RecyclerView byłoby, i znikają, gdy dane są zakończeniu ładowaniaSet bar na górze RecylerView i usunąć po danych jest ładowany

to będzie wyglądać jak:

enter image description here

Czy ktoś może mi pomóc?

Mam kod, który pokazuje TextView powyżej RecyclerView, który mówi "Ładowanie ..." i znika po załadowaniu danych, ale widok RecyclerView jest nadal widoczny.

Moje XML:

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/loaderTV" 
    android:text="Loading..." 
    android:layout_above="@+id/eventListRV"/> 

<android.support.v7.widget.RecyclerView 
    android:scrollbars="vertical" 
    android:id="@+id/eventListRV" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/spinner"> 



    </android.support.v7.widget.RecyclerView> 

A potem w moim kodu

client.listCreators(request, new Callback<ServiceResponse<Event>>() { 
      @Override 
      public void success(ServiceResponse<Event> eventServiceResponse, Response response) { 
       eventList.addAll(eventServiceResponse.data.results); 
       Log.i("tag", String.valueOf(eventServiceResponse.data.total)); 

       if (eventList.size() > 60) { 
        adapter.notifyDataSetChanged(); 
        loadingText.setVisibility(View.GONE); 
       } 
      } 

Ale chcę RecyclerView być niewidoczne podczas gdy dane są ładowane i chcę pasek postępu ontop gdzie RecyclerView jest i nie chcę, aby był to tekstowy widok

Odpowiedz

13
  1. Zawijanie widoku RecyclerView i układu ładującego (lub TextView) ide a FrameLayout. Ustaw oba na match_parent dla szerokości i wysokości.
  2. Ukryj RecyclerView w onCreate() swojego działania lub onCreateView() swojego fragmentu: recyclerView.setVisibility(View.GONE);
  3. W swojej metodzie zwrotnej ukryć układ ładowania z setVisibility(View.GONE), pokazać swój RecyclerView z setVisibility(View.VISIBLE) i wyzwolić reload adaptera z adapter.notifyDataSetChanged()
+0

, który pracował z wyjątkiem ProgressBar nie jest wyśrodkowany –

+0

ok to skupione teraz, z wyjątkiem ikony ładowania jest ogromna! Chyba mogę wymyślić sposób, aby go zmniejszyć –

+0

Kiedy używam '' 'notifyDataSetChanged''' UI zawiesza się, a' '' progressBar''' jest zatrzymany: http://stackoverflow.com/questions/ 41945734/recyclerview-with-100-items-loading-too-slow – JCarlos

0

do centrowania użytkownikowi pasek postępu użytku

android:layout_centerVertical="true" 
android:layout_centerHorizontal="true" 
0

Dla skalowania rozmiaru pasek postępu można użyć scaleX i scaleY i ustaw wartość dla mniejszych rozmiarów.

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/frameLayout"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerView" 
     android:scrollbars="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

    <ProgressBar 
     android:id="@+id/progressBar" 
     android:visibility="visible" 
     android:scaleX="0.10" 
     android:scaleY="0.10" 
     android:textColor="@color/colorAccent" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent" 
     android:layout_gravity="center"/> 
</FrameLayout> 
Powiązane problemy