web-dev-qa-db-fra.com

Vue du recycleur montrant un seul article

Je suis confronté à une erreur étrange où recyclerview affiche un seul élément. Vous trouverez ci-dessous le code de mon adaptateur recyclerview:

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

J'ai déjà utilisé ce code dans une autre application et cela fonctionne parfaitement. J'ai vérifié les données de discussions, ce qui est également parfait.

Voici le lien vers les fichiers de mise en page git repo: fichiers de mise en page

89
Rujul1993

N'utilisez pas match_parent pour la hauteur pour votre vue d'article. Un élément remplit tout l'écran verticalement pour ne pas en voir un autre. 

331
Slavik

lorsque vous créez row.xml pour recyclerview, procédez comme suit:

  1. Utilisez toujours "wrap_content" pour la hauteur de la ligne, sinon dans "match_parent", il occupera tout l'écran pour une seule ligne.

  2. Vous pouvez également prendre la hauteur en dp.

13
Abhishek Kumar

Essayez de changer la mise en page utilisée dans votre vue d'article en FrameLayout. Voici un exemple.

<?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>
0
Searene

1) si votre recyclerview est vertical, définissez la hauteur de recyclerview match_parent et row_item.xml height aussi match_parent

2) si votre recyclerview est horizontale, définissez la largeur de recyclerview match_parent et row_item.xml Width également match_parent

par exemple: - Horizontal RecyclerView

<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" />
0
Gautam Surani