单击按钮后,在recyclerview中对单个视图进行动画处理

时间:2019-09-14 15:25:50

标签: android animation android-recyclerview android-animation android-viewholder

我有一个按钮和一个回收站视图。该按钮刷新列表。我想为“回收者”视图中的文本视图之一更新动画。不是整个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);

凹凸

2 个答案:

答案 0 :(得分:2)

您应该实现自己的 ItemAnimator ,并将其设置为RecyclerView。这里有一些有用的信息:https://hackmd.io/@nesquena/r1IEQ-jAl?type=view

答案 1 :(得分:0)

谢谢,我稍后再检查ItemAnimator。 我昨天最后做的是在我的adapter.refresh()和动画之间添加了一个小的延迟。就像他们建议的here一样。奇怪的是,即使notifyDataSetChanged();,这种延迟似乎也是必要的。在动画之后被称为。我认为这不是一个很好的解决方案,但它目前可以使用。

getSuggestions