2015-03-02 2 views
5
geladen

Ich möchte ein Ladesymbol haben, die auf der Spitze, wo ein RecyclerView wäre angezeigt wird, und verschwinden, sobald das Laden von DatenSet Fortschrittsbalken oben auf RecylerView und entfernen, nachdem Daten

fertig ist es aussehen würde, wie:

enter image description here

Kann mir jemand helfen?

Ich habe den Code, der eine TextView über der RecyclerView zeigt, die "Loading ..." sagt und verschwindet, nachdem die Daten geladen werden, aber die RecyclerView ist immer noch sichtbar.

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

Und dann in meinem Code

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

Aber ich die RecyclerView wollen, unsichtbar zu sein, während die Daten geladen wird, und ich möchte den Fortschrittsbalken ontop wo der RecyclerView ist, und ich möchte nicht, dass es eine Textansicht ist

Antwort

13
  1. Wrap sowohl Ihre RecyclerView und Ihr Laden Layout (oder TextView) Ins ide ein FrameLayout. Stellen Sie beide dann für Breite und Höhe auf .
  2. die RecyclerView im onCreate() Ihre Aktivität oder onCreateView() des Fragments ausgeblendet: recyclerView.setVisibility(View.GONE);
  3. In Ihrer Callback-Methode das Laden Layout mit setVisibility(View.GONE) verbergen, zeigen sie ihre RecyclerView mit setVisibility(View.VISIBLE) und einem erneuten Laden des Adapters triggern mit adapter.notifyDataSetChanged()
+0

das funktioniert, außer der Fortschrittsbalken ist nicht zentriert –

+0

ok es ist jetzt zentriert, außer das Laden-Symbol ist riesig! Ich denke, ich kann einen Weg finden, um es kleiner zu machen –

+0

Wenn ich das '' 'notifyDataSetChanged''' verwende, friert die Benutzeroberfläche ein und die' '' progressBar''' wird gestoppt: http://StackOverflow.com/questions/ 41945734/recyclerview-with-100-items-loading-too-slow – JCarlos

0

Zur Zentrierung Benutzer von Fortschrittsbalken Verwendung

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

Für den Fortschrittsbalken Größe Masstab Sie scaleX und scaleY und stellen Sie den Wert verwenden können für kleinere Größe.

<?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> 
Verwandte Themen