vidrio reciclar reciclapp reciclaje para jerapp compra colombia chile cali basura app android android-recyclerview recycler-adapter

android - reciclar - reciclapp chile



Vista del reciclador que muestra un solo artículo (4)

Me enfrento a un extraño error en el que la vista de reciclaje solo muestra un elemento. A continuación se muestra el código para mi adaptador de vista de reciclaje:

public class ChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { List<chat> chats; String username; final int My=0,Their=1; public ChatAdapter(List<chat> chats) { this.chats = chats; this.username = PushApp.getApp().getSPF().getStringData(Constants.ANAME); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { RecyclerView.ViewHolder viewHolder; LayoutInflater inflater = LayoutInflater.from(parent.getContext()); switch (viewType) { case My: View v1 = inflater.inflate(R.layout.my_chat_child, parent, false); viewHolder = new MyChatHolder(v1); break; case Their: View v2 = inflater.inflate(R.layout.their_chat_child, parent, false); viewHolder = new TheirMessageHolder(v2); break; default: View v = inflater.inflate(R.layout.my_chat_child, parent, false); viewHolder = new MyChatHolder(v); break; } return viewHolder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (holder.getItemViewType()) { case My: MyChatHolder myChatHolder = (MyChatHolder) holder; myChatHolder.setMyMessage(chats.get(position).getMessage()); break; case Their: TheirMessageHolder theirMessageHolder = (TheirMessageHolder) holder; theirMessageHolder.setTheirChat(chats.get(position).getFrom(), chats.get(position).getMessage()); break; } } @Override public int getItemViewType(int position) { if(username.equalsIgnoreCase(chats.get(position).getFrom())) return My; return Their; } @Override public int getItemCount() { return chats.size(); }}

Ya he usado este código en otra aplicación y funciona perfectamente. He comprobado los datos de los chats, que también son perfectos.

Aquí hay un enlace a los archivos de diseño de repositorio git: archivos de diseño


1) si su vista de reciclaje es vertical, configure la altura de la vista de reciclaje match_parent y row_item.xml height también match_parent

2) si su vista de reciclaje es horizontal, configure el ancho de vista de reciclaje match_parent y row_item.xml Width también match_parent

por ejemplo: - RecyclerView horizontal

<android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="60dp" android:layout_marginRight="60dp" />

row_item.xml

<TextView android:layout_width="match_parent" android:layout_height="180dp" android:layout_marginBottom="5dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="5dp" android:background="@drawable/rect" android:gravity="center" android:maxLines="2" android:padding="10dp" android:textColor="@color/white" android:textSize="25sp" />


Intente cambiar el diseño utilizado en la vista de elementos a FrameLayout . Aquí hay un ejemplo.

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/item" android:layout_width="match_parent" android:layout_height="?listPreferredItemHeight" android:clickable="true" android:focusable="true" android:foreground="?selectableItemBackground"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp"/> </FrameLayout>


No use match_parent para altura para la vista de su artículo. Un elemento ocupa toda la pantalla verticalmente para que no vea otro.


cuando esté creando row.xml para la vista de reciclaje debe seguir estas cosas:

  1. Utilice siempre "wrap_content" para el alto de la fila; de lo contrario, en "match_parent" ocupará toda la pantalla durante una sola fila.

  2. También puedes tomar la altura en dp.