我有一个按钮和一个回收站视图。该按钮刷新列表。我想为“回收者”视图中的文本视图之一更新动画。不是整个recyclerview,不是整个行-只是一个视图(每行)。
我尝试将动画放在onBindViewHolder中。但这会在滚动时以及当我添加列表条目时启动动画:
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
Animation animation = AnimationUtils.loadAnimation(context, R.anim.rv_animation_clockwise);
((ViewHolderItem)holder).tv.startAnimation(animation);
然后我尝试将TextChangedListener添加到我的文本视图。但这具有将其直接放入onBindViewHolder中的作用:
((ViewHolderItem)holder).tv.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
我最后一次尝试是使用findViewHolderForAdapterPosition。但是它什么也没做。 这是我的按钮调用的刷新方法。在RecyclerViewAdapter中。 recyclerview是我在onAttachedToRecyclerView中设置的实例变量:
RecyclerView recyclerView;
@Override
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
this.recyclerView = recyclerView;
}
void refresh (List<Entry> al){
this.al = al;
notifyDataSetChanged();
((ViewHolderItem)recyclerView.findViewHolderForAdapterPosition(0)).tv.startAnimation(animation);
凹凸
答案 0 :(得分:2)
您应该实现自己的 ItemAnimator ,并将其设置为RecyclerView。这里有一些有用的信息:https://hackmd.io/@nesquena/r1IEQ-jAl?type=view
答案 1 :(得分:0)
谢谢,我稍后再检查ItemAnimator。 我昨天最后做的是在我的adapter.refresh()和动画之间添加了一个小的延迟。就像他们建议的here一样。奇怪的是,即使notifyDataSetChanged();,这种延迟似乎也是必要的。在动画之后被称为。我认为这不是一个很好的解决方案,但它目前可以使用。
getSuggestions