2016-04-12 17 views
56

मुझे एक अजीब त्रुटि का सामना करना पड़ रहा है जहां रीसाइक्लिंगव्यू केवल एक ही आइटम दिखा रहा है।रीसाइक्लिंग दृश्य एकल आइटम दिखा रहा है

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

मैं पहले से ही अन्य अनुप्रयोग में इस कोड का इस्तेमाल किया है और इसकी पूरी तरह से काम कर रहे: नीचे मेरी recyclerview एडाप्टर के लिए कोड है। मैंने चैट डेटा की जांच की है जो भी सही है। layout files

+0

जोड़ने अपने xml कोड – OShiffer

+0

@OShiffer मैं Git रेपो लिंक – Rujul1993

+3

'सेट करने के लिए बजाय' ऊंचाई और अपने लेआउट में चौड़ाई के लिए match_parent' की wrap_content' प्रयास करें जोड़ लिया है https: // GitHub .com/revic1993/androidchat/blob/master/app/src/main/res/layout/my_chat_child.xml # L4 https://github.com/revic1993/androidchat/blob/master/app/src/main/res/ लेआउट/their_chat_child.xml # एल 4 – Slavik

उत्तर

220

अपने आइटम देखने के लिए ऊंचाई के लिए match_parent उपयोग न करें:

यहाँ Git रेपो लेआउट फ़ाइलों के लिए लिंक है। एक आइटम पूरी स्क्रीन को लंबवत भर देता है ताकि आप कोई और न देख सकें।

+22

Google कृपया कुछ लिंट चेतावनियां जोड़ें, इस बार अपने कष्टप्रद लिंट को उपयोगी बनाएं! –

+1

ओह धन्यवाद, बहुत बढ़िया आदमी, मेरे मामले में मैंने ऊंचाई के रूप में match_parent के साथ आइटम बनाया। इसलिए सभी स्क्रीन को पहले आइटम के पीछे रखा गया था। –

+5

मुझे आपको एक कॉफी खरीदने दो! तुमने मेरी सैनिटी बचाई! धन्यवाद! – microwth

6

जब आप recyclerview के लिए row.xml पैदा कर रहे इन बातों का पालन करना चाहिए:

  1. हमेशा पंक्ति की ऊंचाई के लिए "Wrap_content" का उपयोग अन्यथा "match_parent" में यह एक ही पंक्ति के लिए पूरे स्क्रीन पर कब्जा होगा ।

  2. आप डीपी में ऊंचाई भी ले सकते हैं।

+0

मेरे पास एक ही समस्या थी स्क्रॉल करने की कोशिश की और बाकी वस्तुओं को देखा –

+1

आपके दूसरे बिंदु ने मेरी मदद की :) –

+0

धन्यवाद @AdarshGumashta –

-1

1) अगर आपके recyclerview recyclerview match_parent और भी row_item.xml ऊंचाई match_parent

2) के ऊर्ध्वाधर तो सेट ऊंचाई है अगर आपके recyclerview क्षैतिज है तो recyclerview match_parent और row_item.xml चौड़ाई भी match_parent

की चौड़ाई सेट

पूर्व के लिए: - क्षैतिज पुनर्चक्रण देखें

<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" /> 
संबंधित मुद्दे