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
android
android-recyclerview
recycler-adapter
Rujul1993
fuente
fuente

wrap_contentlugar dematch_parentaltura y ancho en sus diseños github.com/revic1993/androidchat/blob/master/app/src/main/res/… github.com/revic1993/androidchat/blob/master/app/src/main / res /…Respuestas:
No use la
match_parentaltura para la vista de su artículo. Un elemento ocupa toda la pantalla verticalmente para que no vea otro.fuente
Buttoncolocaron antesRecyclerView. ¿Alguna sugerencia?cuando esté creando row.xml para la vista de reciclaje, debe seguir estas cosas:
Utilice siempre "wrap_content" para la altura de la fila; de lo contrario, en "match_parent" ocupará toda la pantalla durante una sola fila.
También puedes tomar la altura en dp.
fuente
Intente cambiar el diseño utilizado en la vista de elementos a
FrameLayout. Aquí hay un ejemplo.fuente
Mi error fue que usé Accidantly:
en vez de:
fuente
1) si su vista de reciclaje es vertical, establezca también la altura de la vista de reciclaje
match_parenty larow_item.xmlalturamatch_parent2) si su vista de reciclaje es horizontal, configure el Ancho de vista de reciclaje
match_parenty elrow_item.xmlAncho tambiénmatch_parentpor ejemplo: - RecyclerView horizontal
row_item.xml
fuente
content_main.xml de la siguiente manera
EN el archivo row_list.xml realiza los siguientes cambios
Hago los cambios anteriores que se ejecuta.
fuente