Bu, bir RecyclerView ile veri bağlamada ilk denemem ancak RecyclerView'ın ilk kullanımım değil.RecyclerView ve Veri Ciltleme çalışmıyor
Bazı nedenlerden dolayı bağdaştırıcı yöntemlerinden hiçbiri - getItemCount() bile değil. Bu benim RecyclerView ile aptal bir sorun olabilir ve veri bağlayıcı ile ilgisi yok ama ben yanlış bir şey göremiyorum.
View rootview = inflater.inflate(R.layout.fragment_profile_first, container, false);
// Initialize recycler view
RecyclerView badgesRV = (RecyclerView) rootview.findViewById(R.id.badgesRV);
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
llm.setOrientation(LinearLayoutManager.HORIZONTAL);
badgesRV.setLayoutManager(llm);
BadgeAdapter badgeAdapter = new BadgeAdapter(profileObject.badgesEntity.badges);
badgesRV.setAdapter(badgeAdapter);
Adaptör: kontrol ettim ve orada veri kesinlikle yoktur
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable name="badge" type="parseJsonEntities.requestObjects.BadgeObject"/>
</data>
<LinearLayout
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@{badge.badgeImage}"/>
</LinearLayout>
public class BadgeAdapter extends RecyclerView.Adapter<BadgeAdapter.BadgeBindingHolder>{
private static final int MAX_BADGES_TO_DISPLAY = 5;
private BadgeObject[] badges;
public BadgeAdapter(BadgeObject[] badges){
this.badges = badges;
}
@Override
public BadgeBindingHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.profile_badge_row, parent, false);
BadgeBindingHolder holder = new BadgeBindingHolder(v);
return holder;
}
@Override
public void onBindViewHolder(BadgeBindingHolder holder, int position) {
final BadgeObject badgeObject = badges[position];
holder.getBinding().setVariable(BR.badge, badgeObject);
holder.getBinding().executePendingBindings();
}
@Override
public int getItemCount() {
Log.d(TAG, "item count = " + Math.min(MAX_BADGES_TO_DISPLAY, badges.length));
return Math.min(MAX_BADGES_TO_DISPLAY, badges.length);
}
public class BadgeBindingHolder extends RecyclerView.ViewHolder{
private ViewDataBinding binding;
public BadgeBindingHolder(View rowView) {
super(rowView);
binding = DataBindingUtil.bind(rowView);
}
public ViewDataBinding getBinding() {
return binding;
}
}
}
profile_badge_row.xml. Neleri özledim?
=====================
Güncelleme: Ben RecyclerView Söyleyebileceğim kadarıyla
basitçe Bağlama bir Veri içinde çalışmaz düzeni. Sadece RV'imle ayrı bir düzen oluşturdum ve mükemmel bir şekilde çalıştı. Ana mizamı eklediğimde çalışmaya son verildi. Bu bir hata veya özellik olup olmadığından emin değil.
Yani, belki de özel bir görünüm yaparsam belki işe yarayacaktır diye düşündüm. Sorunum, özel görünümüme nasıl bir değer iletileceğini bilmiyorum.
here nolu telefonu inceledim ama ne demek istediğini tam olarak anlamadım. Bu, özel görünümdeki kodum.
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.profile_badges_layout, this, true);
ProfileBadgesLayoutBinding binding = ProfileBadgesLayoutBinding.inflate(inflater);
RecyclerView badgesRV = (RecyclerView) view.findViewById(R.id.badgesRV);
LinearLayoutManager llm = new LinearLayoutManager(context);
llm.setOrientation(LinearLayoutManager.HORIZONTAL);
badgesRV.setLayoutManager(llm);
BadgeAdapter badgeAdapter = new BadgeAdapter(null);
badgesRV.setAdapter(badgeAdapter);
Bu, ProfileBadgesLayoutBinding öğesinin bulunmadığını bildiren bir ileti verir. Gelen
sizin parçası xml yaklaşık
bindToViewHolder
Daha ?? –
'RecyclerView',' DataBinding' ile mükemmel bir şekilde çalışır, çünkü diğerleri bunu sorunsuz olarak kullanır. Düzeninizi 'RecyclerView' konumunuzda yayınlayabilir misiniz? Belki diğer kaydırma görünümleri ile bazı garip davranış. – yennsarah
Ayrıca, badge.badgeImage nedir? Bir 'Kaynak kimliği', 'Çizim' ..? – yennsarah