0

Ich versuche, ein SwipeRefreshLayout in meinem Fragment anzuzeigen. Ich habe ein TabLayout mit 3 Tabs (Fragment) erstellt. Im ersten gibt es einen RecyclerView. Ich habe versucht, das SwipeRefreshLayout in CoreActivity zu implementieren, und es funktioniert. Irgendwelche Vorschläge? Ist es möglich, dass TabLayour das SwipeRefreshLayout überschreibt?SwipeRefresh nicht in einem Fragment mit RecyclerView angezeigt

Hier ist der Code:

CoreActivity.xml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.latlo.firestore.CoreActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/Theme.AppCompat.NoActionBar"> 


     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="?attr/colorPrimary" 
      android:minHeight="?attr/actionBarSize" 
      app:layout_scrollFlags="scroll|enterAlways" /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 



    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 


    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/floatingActionButton5" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:layout_gravity="top|left" 
     android:layout_margin="16dp" 
     android:background="@color/white" 
     android:backgroundTint="@color/white" 
     android:clickable="true" 
     android:src="@drawable/ic_add_black_24dp" 
     app:layout_anchor="@+id/viewpager" 
     app:layout_anchorGravity="bottom|right" /> 


    </android.support.design.widget.CoordinatorLayout> 


<android.support.design.widget.NavigationView 
    android:id="@+id/menulaterale" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    app:headerLayout="@layout/drawer_top" 
    app:menu="@menu/drawer_menu"/> 


</android.support.v4.widget.DrawerLayout> 

Announces_content_fragment.xml:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:padding="16dp" 
android:background="?android:attr/selectableItemBackground" 
tools:context="chilor.lolmatch.AnnouncesContentFragment"> 

<ImageView 
    android:id="@+id/img" 
    android:layout_width="70dp" 
    android:layout_height="70dp" 
    tools:src="@drawable/diamond_v" 
    android:layout_below="@+id/queue_type" 
    android:layout_alignParentStart="true" /> 
<TextView 
    android:id="@+id/queue_type" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="16dp" 
    tools:text="ciao" 
    android:textAppearance="?attr/textAppearanceListItem" 
    android:textSize="20dp" 
    android:layout_marginStart="36dp" 
    android:layout_alignParentTop="true" 
    android:layout_toEndOf="@+id/img" /> 

<Button 
    android:id="@+id/button_reply" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Reply" 
    android:layout_alignBottom="@+id/img" 
    android:layout_alignParentEnd="true" 
    style="@style/Widget.AppCompat.Button.Borderless.Colored" 
    android:theme="@style/AppTheme.Button"/> 

<TextView 
    android:id="@+id/time" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignStart="@+id/queue_type" 
    android:layout_centerVertical="true" 
    android:text="24/06/17 23:00" /> 

<TextView 
    android:id="@+id/sender" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="ADC" 
    android:textSize="18sp" 
    android:textStyle="bold" 
    android:layout_alignBaseline="@+id/button_reply" 
    android:layout_alignBottom="@+id/button_reply" 
    android:layout_alignStart="@+id/time" /> 

<TextView 
    android:id="@+id/textView3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Looking For" 
    android:layout_alignBottom="@+id/queue_type" 
    android:layout_alignStart="@+id/button_reply" /> 

<TextView 
    android:id="@+id/receiver" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignStart="@+id/textView3" 
    android:layout_below="@+id/textView3" 
    android:text="Support" /> 

<TextView 
    android:id="@+id/summ" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" 
    android:textStyle="bold" /> 




</RelativeLayout> 

Recycler_view.xml:

<android.support.v4.widget.SwipeRefreshLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/swiperefresh2" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
      <android.support.v7.widget.RecyclerView 
      xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       xmlns:app="http://schemas.android.com/apk/res-auto" 
       android:id="@+id/my_recycler_view" 
       android:clipToPadding="false" 
       android:paddingBottom="16dp" 
       android:paddingTop="16dp" 
       android:scrollbars="vertical" 
       app:layout_behavior="@string/appbar_scrolling_view_behavior"> 
      </android.support.v7.widget.RecyclerView> 

    </ScrollView> 



</android.support.v4.widget.SwipeRefreshLayout> 

Announces_content_fragment.act ivity:

public class AnnouncesContentFragment extends Fragment implements 
SwipeRefreshLayout.OnRefreshListener { 

    private RecyclerView.Adapter adapter; 
    private RecyclerView recyclerView; 
    private List<Messages> currentItems = new ArrayList<>(); 
    private String summoner; 
    private String rank; 
    private FirebaseAuth au = FirebaseAuth.getInstance(); 
    private FirebaseFirestore d; 
    private SwipeRefreshLayout swipeRefreshLayout; 
    //public static CurrentProfile current; 






    @SuppressLint("ResourceAsColor") 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup 
container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View v = inflater.inflate(
      R.layout.recycler_view, container, false); 
    recyclerView = (RecyclerView) 
    v.findViewById(R.id.my_recycler_view); 
    FirebaseFirestore d = FirebaseFirestore.getInstance(); 


    swipeRefreshLayout = (SwipeRefreshLayout) 
    v.findViewById(R.id.swiperefresh2); 
    swipeRefreshLayout.setProgressViewOffset(true, 1500, 1800); 



    swipeRefreshLayout.setColorSchemeColors 
    (android.R.color.holo_blue_light, 
      android.R.color.holo_green_light, 
      android.R.color.holo_red_light, 
      android.R.color.holo_orange_light); 
    swipeRefreshLayout.setOnRefreshListener(this); 
    swipeRefreshLayout.post(new Runnable() { 
     @Override 
     public void run() { 
      swipeRefreshLayout.setRefreshing(true); 
     } 
    }); 
    try { 
     setFirebaseValueListener(); 
    } catch (ExecutionException e) { 
     e.printStackTrace(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    recyclerView.setAdapter(adapter); 
    recyclerView.setHasFixedSize(true); 
    recyclerView.setNestedScrollingEnabled(true); 
    LinearLayoutManager mm = new LinearLayoutManager(getContext(), 
    LinearLayoutManager.VERTICAL,false); 
    recyclerView.setLayoutManager(mm); 
    return recyclerView; 
} 


public void setFirebaseValueListener() throws ExecutionException, 
InterruptedException, JSONException { 
    final FirebaseFirestore d = FirebaseFirestore.getInstance(); 
    NetworkController nc = new NetworkController(); 
    nc.getMessages(getContext(), new ServerCallback() { 
     @Override 
     public void onSucces(JSONObject result) { 
      try { 
       JSONArray array = result.getJSONArray("data"); 
       for(int i =0;i<array.length();i++){ 
        JSONObject obj = array.getJSONObject(i); 
        Messages mes = new 
        Gson().fromJson(obj.toString(),Messages.class); 
        currentItems.add(mes); 
       } 
       summoner = "AFKMan"; 
       adapter = new 
       RecyclerViewAdapter(currentItems,summoner); 
       recyclerView.setAdapter(adapter); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

@Override 
public void onRefresh() { 
    try { 
     setFirebaseValueListener(); 
    } catch (ExecutionException e) { 
     e.printStackTrace(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 
+1

versuchen, die Scrollview in Ihrem 'Recycler_view.xml' –

+0

@NavneetKrishna Nichts Entfernung zu tun. Es ist, als würde etwas das Swipe-Layout außer Kraft setzen. –

Antwort

1

Mit RecyclerView, Sie brauchen sich nicht um Scroll zu kümmern. Recyclerview fügt automatisch Scrollview ein, wenn Ihre Liste das Limit von Layout überschreitet.

Versuchen Sie, Scrollview zu entfernen, das könnte helfen.

Und es sieht auch so aus, als hätten Sie kein Layout-Elternteil zu SwipeRefreshLayout hinzugefügt. schließen Sie LinearLayout oder irgendein anderes Layout-Elternteil zu SwipeRefreshLayout.

bearbeiten (Ihr Problem löst)

ersetzen
return recyclerView; 

von

return v;  
+0

Nichts zu tun: | –

+0

enthalten LinearLayoutl in Recipler_View.xml Eltern zu SwipeRefreshLayout –

+0

Meinst du innerhalb der Swipe? –

Verwandte Themen