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
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!
ç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. –
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 –
tamam bunu deneyeceğim ve size geri döneceğim. –