2016-04-14 10 views
1

Listedeki yayınları görüntülemek için abonelere beslemeleri göstermem gereken bir sosyal ağ uygulamasında çalışıyorum. RecyclerView kullanıyorum. Şimdiye kadar sorun yok ... ama sorun, feed'de bazı yorumlar göstermem gerektiğinde ortaya çıkıyor. Instagram'a benzeyen bir düzen elde etmeye çalışıyorum ve ana listede en az 3-4 yorum var. Görüntü bağlantıları ve yorumları (JSON dizi formunda) sunucudan alıyorum. Bazen yorum dizisi boyutu 0 ve bazen 1/2 ../ 10 alırım. Ben 2 TextView içeren açıklama düzeni için bir XML oluşturduk ve ben dayalı FeedViewHolder bunu şişirme ediyorum benim ViewType .. Sonra RecyclerView adaptor..and benim yem listesini geçirerekGörselleştirici görünümü veya dolgu düzenini Dinamik olarak ekleme RecyclerView öğesinin öğesi

<RelativeLayout 
    android:id="@+id/comment_layout" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingBottom="5dp" 
    android:paddingLeft="5dp" 
    android:paddingTop="5dp"> 

    <TextView 
     android:textStyle="bold" 
     android:textColor="@color/indigo_500" 
     android:id="@+id/comment_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:src="@drawable/profile_pic" 
     android:text="Somesh Kumar"/> 

    <TextView 
     android:id="@+id/comment_text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_toRightOf="@+id/comment_name" 
     android:ellipsize="end" 
     android:paddingLeft="5dp" 
     android:singleLine="true" 
     android:text="This is a comment"/> 
</RelativeLayout> 

gibi benim item_comment bakış Öğenin (gösterilecek) açıklamaları olup olmadığını kontrol edip etmediğimi kontrol ediyorum. i setText zaman

@Override 
public int getItemViewType(int position) 
{ 
    FeedParser.DataClass dataClass = feedList.get(position); 
    int ITEM_TYPE = 0; 
    if (dataClass.getPost_type() == FEED_TYPE_PICTURE) // Feed item contains caption with pictures 
    { 
     // check if it has comments 
     if (dataClass.getComments().size() == 0) 
     { 
      ITEM_TYPE = PICTURE_WITHOUT_COMMENTS; 
     } 
     else 
     { 
      ITEM_TYPE = PICTURE_WITH_COMMENTS; 
     } 
    } 
    return ITEM_TYPE; 
} 

ve viewType ben bu mükemmel çalışır doğruladıktan

 public FeedViewHolder(View itemView, int viewType) 
    { 
     super(itemView); 
     tvFeedUsername = (TextView) itemView.findViewById(R.id.tvFeedUsername); 
     tvFeedCaption = (TextView) itemView.findViewById(R.id.tvFeedCaption); 


     switch (viewType) 
     { 
      // TODO: Write code for other feed type such as picture and video 
      // viewType 1 = PICTURE_WITH_COMMENTS 
      case 1: 
       layoutComments = (LinearLayout) itemView.findViewById(R.id.layoutComments); 
       commentView = layoutInflater.inflate(R.layout.item_comment, null); 
       postCommentText = (TextView) commentView.findViewById(R.id.comment_text); 
       postCommentName = (TextView) commentView.findViewById(R.id.comment_name); 
       layoutComments.addView(commentView); 
       break; 
     } 
    } 

yorumlarınızı varsa Öğe düzenini ve yorum düzenini şişirme

@Override 
public FeedViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
{ 
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_feed, parent, false); 
    return new FeedViewHolder(itemView, viewType); 
} 

ve FeedViewHolder yılında

gibi onCreateViewHolder için ITEM_TYPE geçen fakat içinde holder.postCommentName & holder.postCommentText için onBindViewHolder son comment (i bütün comment döngü ve aynı holder.postCommentText ve burada holder.postCommentName üzerinde teker teker kuruyorum çünkü benim onBindViewHolder olduğunu biliyorum sadece ayarlanır metin ..

@Override 
public void onBindViewHolder(FeedViewHolder holder, int position) 
{ 
    FeedParser.DataClass feedModel = feedList.get(position); 
    holder.tvFeedUsername.setText(feedModel.getName()); 
    holder.tvFeedCaption.setText(feedModel.getPost_status()); 

    if (getItemViewType(position) == TEXT_WITH_COMMENTS) 
    { 
     for (int commentNum = 0; commentNum < feedModel.getComments().size(); commentNum++) 
     { 
      holder.postCommentName.setText(feedModel.getComments().get(commentNum).getUser_name()); 
      holder.postCommentText.setText(feedModel.getComments().get(commentNum).getComment()); 
     } 
    } 
} 

Bilmiyorum Bu doğru bir yaklaşım olsa da olmasa da ... ama bazı insanlar burada bir cevap yazdılar ... This one gibi. Ben çok SO posta aradım ama istediğimi elde değil. Yorumun XML düzenini şişirebileceğim ve bunu RecyclerView öğesinin üzerine birden çok kez ekleyebileceğim başka bir yol var mı?

Teşekkürler herhangi bir yardım çok takdir edilecektir!

cevap

0

i ana recycler görünümünde iç içe geçmiş bir geri dönüşüm görünüm oluşturmak için gereken inanın ve .Peki temelde

1.) Ana Recycler Görüntüle Resim yazısı içeren yorumların bu kadar iç içe adaptör içine veri geçmesi gerekiyor , Görüntü, RecyclerView ikinci reyclerview ise (instagram göre) yorumlarla

2.) için yukarıdaki yorum düzenini koymak ve

sne It yorum olarak başka yardım için bana sor .. verilerle ayrı adaptör oluşturmak

+1

çocuk Recycl Ana RecyclerView öğesinin içinde erView? Benim durumumda haklı olduğunu düşünüyor musunuz, çünkü sadece son 3 yorumu ve başka hiçbir şeyi göstermem gerekiyor! Bu bir xml şişirmek daha iyi değil mi? Gerçekten instagramın veya başkalarının bunu nasıl yaptığını bilmiyorum. –

+0

Bazı öğeler arasında geçiş yapmanız gerekiyorsa (yorumlarınızda), bunları görüntülemek için bir liste veya bir reyclerView (önerilir) oluşturmanız gerekir. Peki ben android geliştirme ile deneyimim var ve size bu konuda gitmek için bir şey söyleyebilirim. Endişelenmeyin, iyi olacak –

+0

tamam bunu deneyeceğim ve size geri döneceğim. –

İlgili konular