我有一个RecyclerView它被RealmRecyclerViewAdapter填充,但不知何故数据改变时没有动画播放。 适配器类使用多个ViewHolders用于不同的布局,但不应该影响动画的权利?Android Realm RecyclerView动画无效?
public class DiaryPageEntryAdapter extends RealmRecyclerViewAdapter {
static class MealEntryViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.item_diary_entry_drink_title) TextView tvMealEntryTitle;
@BindView(R.id.item_diary_entry_meal_time) TextView tvMealEntryTime;
BindView(R.id.item_diary_entry_meal_bullet_list) RecyclerView rvBulletList;
MealEntryBulletAdapter bulletAdapter;
public MealEntryViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
this.bulletAdapter = new MealEntryBulletAdapter();
rvBulletList.setLayoutManager(new LinearLayoutManager(itemView.getContext()));
rvBulletList.setAdapter(this.bulletAdapter);
}
void bindData(MealEntry mealEntry) {
tvMealEntryTitle.setText(mealEntry.getTitle());
tvMealEntryTime.setText(DateTimeUtils.timeValueToText(itemView.getContext(), mealEntry.getTime()));
this.bulletAdapter.updateData(mealEntry.getConsumedMeals() ,mealEntry.getConsumedDrinks());
}
}
// Other ViewHolders
public DiaryPageEntryAdapter(@Nullable OrderedRealmCollection data, boolean autoUpdate) {
super(data, autoUpdate, true);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case MEAL_ENTRY:
// Inflate meal entry layout and then create a new meal view holder with it
View rowMeal = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_diary_entry_meal, parent, false);
return new MealEntryViewHolder(rowMeal);
// Other case options.
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
Entry entry = getItem(position);
if(Entry.isMealEntry(entry)) {
MealEntryViewHolder mealHolder = (MealEntryViewHolder) holder;
mealHolder.bindData(Entry.getMealEntryFromEntry(entry));
}
// Other if branches.
}
@Override
public int getItemViewType(int position) {
Entry entry = getItem(position);
if(Entry.isMealEntry(entry)) return MEAL_ENTRY;
// Other if branches.
}
用于设置RecyclerView和适配器代码看起来如下:
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.frag_diary_page_rv_entries);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
entryAdapter = new DiaryPageEntryAdapter(null, true);
recyclerView.setAdapter(entryAdapter);
所述数据结合到适配器的代码如下所述:
RealmResults sortedEntries = diaryEntry.getEntries()
.where()
.findAllSortedAsync("time");
entryAdapter.updateData(sortedEntries);
的自动更新工作正常,但不知何故数据改变时没有动画。一个新的条目只是出现,但没有动画。此外,一旦RecyclerView首次被填充,我想要一个简短的动画 - 一个类似于[http://anthony-skr.com/article/recyclerview-items-animation-with-rebound-effect][1]的入口动画。
注:在我app's的build.gradle文件
dependencies {
// Other dependencies
compile 'io.realm:android-adapters:2.1.0'
}
在项目的build.gradle文件:
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
classpath "io.realm:realm-gradle-plugin:3.1.4"
}
2017-05-22
Elias
+0
我没有看到任何动画代码.... –