2016-04-12 25 views
56

Geridönüşümün yalnızca tek bir öğeyi gösterdiği garip bir hatayla karşılaşıyorum.Recycler tek bir öğeyi görüntülüyor

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

Zaten başka uygulamada bu yasayı ve onun mükemmel çalışıyor olması: Aşağıda benim recyclerview adaptörü için kodudur. Mükemmel olan sohbetler verilerini de kontrol ettim. layout files

+0

xml kodu – OShiffer

+0

@OShiffer ben – Rujul1993

+3

yerine düzenleri içinde yükseklik ve genişlik için match_parent' 'arasında wrap_content'' ayarlamak için deneyin git repo bağlantı ekledim eklemek https: // github/revic1993/androidchat/blob/master/uygulama/src/main/res/düzen/my_chat_child.xml # L4 https://github.com/revic1993/androidchat/blob/master/app/src/main/res/ layout/their_chat_child.xml # L4 – Slavik

cevap

220

öğe görünümü için yükseklik için match_parent kullanmayın:

Burada git repo düzeni dosyalarına bağlantı. Bir öğe tüm ekranı dikey olarak doldurur, böylece başka bir tane göremezsiniz.

+22

Google lütfen bazı Lint uyarıları ekleyin, rahatsız edici tüylerinizi bu sefer faydalı hale getirin! –

+1

Ah Teşekkürler, Müthiş adam, davamda match_parent ile öğeyi yükseklik olarak oluşturdum. Bu nedenle tüm ekran ilk öğenin arkasında tutuldu. –

+5

Sana bir kahve almama izin ver! Sadece aklımı kurtardın! – microwth

6

bu şeyleri takip etmeli recyclerview için row.xml oluştururken:

  1. daima aksi takdirde "match_parent" satır yüksekliği için "Wrap_content" kullanmak tek satır için tüm ekranı kaplayacağı .

  2. Yüksekliği dp olarak da alabilirsiniz. daki recyclerview yatay olup olmadığını recyclerview recyclerview match_parent ve row_item.xml yüksekliği match_parent

    2) dikey ardından ayarlamak yüksekliği ise

+0

Ben aynı sorun vardı kaydırma çalıştı ve –

+1

öğelerin geri kalanı gördüm 2 puan yardımcı oldu :) –

+0

Teşekkürler @AdarshGumashta –

-1

1) daha sonra recyclerview match_parent ve row_item.xml Genişlik match_parent

genişliği ayarlanır Örnekleme için

: Yatay Geri DönüşümKullanıcı Görünümü

<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" />