recyclerview oncreateviewholder item how custom create android android-recyclerview android-design-library

android - oncreateviewholder - Vistas arriba y abajo RecyclerView



recyclerview android (3)

¿Qué pasa con el uso de weight ?

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://..." android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <View android:layout_width="match_parent" android:layout_height="wrap_content" /> <RecyclerView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <View android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>

Tengo un RecyclerView que muestra contenido dinámico. Me gustaría mostrar este RecyclerView entre otras vistas. Por ejemplo, una vista que se muestra arriba y otra vista debajo de RecyclerView:

View RecyclerView View

Sin embargo, todo lo que intento no parece funcionar y el RecyclerView parece ocupar todo el espacio. Creo que el problema radica en el problema de wrap_content , aunque he intentado algunas soluciones sugeridas, como este LinearLayoutManager personalizado , pero no parece solucionar mi problema.

Intento:

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <!-- AppBar works fine; no issue here --> <android.support.design.widget.AppBarLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/app_bar_layout"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_height="?attr/actionBarSize" android:layout_width="match_parent" app:layout_collapseMode="pin"/> </android.support.design.widget.AppBarLayout> <!-- Not displaying; Tried different views --> <com.chrynan.taginput.view.TextInputWrapper android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edit_text_container"> <AutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edit_text"/> </com.chrynan.taginput.view.TextInputWrapper> <!-- Takes up entire screen space --> <android.support.v4.widget.SwipeRefreshLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/swipe_refresh"> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/recycler_view"/> </android.support.v4.widget.SwipeRefreshLayout> <!-- Not displaying --> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/text_view"/> </LinearLayout> </android.support.design.widget.CoordinatorLayout>

Pregunta: ¿Hay una manera de colocar y mostrar una Vista arriba y una Vista debajo de un RecyclerView? ¿Si es así, cómo? ¿O es mejor usar un ListView?


Puede que esta no sea la solución típica, pero aún así puede intentarlo.

¿Qué le parece usar un RelativeLayout en lugar de LinearLayout y simplemente configurar el relleno superior e inferior de su SwipeRefreshLayout a la altura de sus vistas de la siguiente manera?

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <!-- your app bar --> <!-- Not displaying; Tried different views --> <com.chrynan.taginput.view.TextInputWrapper android:layout_width="match_parent" android:layout_height="150dp" android:layout_alignParentTop="true" android:id="@+id/edit_text_container"/> <!-- Takes up entire screen space --> <android.support.v4.widget.SwipeRefreshLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="150dp" android:paddingBottom="250dp" android:id="@+id/swipe_refresh"> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/recycler_view"/> </android.support.v4.widget.SwipeRefreshLayout> <!-- bottom view --> <TextView android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="250dp" android:id="@+id/text_view"/> </RelativeLayout>