Java 获取RecyclerView.ViewHolder中的上下文

Java 获取RecyclerView.ViewHolder中的上下文,java,android,android-recyclerview,Java,Android,Android Recyclerview,我想在ListView项目首次出现时设置它们的动画。我有以下视图持有者: public class SimpleViewHolder extends RecyclerView.ViewHolder { private TextView simpleTextView; public SimpleViewHolder(final View itemView, final SimpleAdapter.onItemClickListener listener) {

我想在ListView项目首次出现时设置它们的动画。我有以下视图持有者:

public class SimpleViewHolder extends RecyclerView.ViewHolder
{
    private TextView  simpleTextView;

    public SimpleViewHolder(final View itemView, final SimpleAdapter.onItemClickListener listener) 
    {
        super(itemView);

        simpleTextView  = (TextView)  itemView.findViewById(R.id.simple_text);

        RotateAnimation rotate = new RotateAnimation(0, 360,
                Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
                0.5f);
        rotate.setDuration(1000);
        rotate.setRepeatCount( 0 );
        simpleTextView.setAnimation(rotate);
    }

    public void bindData(final SimpleViewModel viewModel)
    {
        simpleTextView.setText( viewModel.getSimpleText() );
    }
}
一切都很好,除了不以编程方式设置动画之外,我想使用以下方法从XML文件加载动画:

Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.myanimation);
但我不清楚如何获取/传递上下文到RecyclerView.ViewHolder,或者这是否是制作动画的正确位置


如何在RecyclerView.ViewHolder中加载XML动画?这是为列表项制作动画的正确位置吗?谢谢

我不反对放置动画。我想这是正确的地方。关于上下文,我会在构造函数中发送它

public SimpleViewHolder(final View itemView, final SimpleAdapter.onItemClickListener listener, Context context) {
 //use this context...

}

如果您的Recycleview没有上下文,那么您也可以将上下文传递给Recycleview。我不认为有其他办法可以解决这个问题。我不反对动画的放置。我想这是正确的地方。关于上下文,我会在构造函数中发送它

public SimpleViewHolder(final View itemView, final SimpleAdapter.onItemClickListener listener, Context context) {
 //use this context...

}

如果您的Recycleview没有上下文,那么您也可以将上下文传递给Recycleview。我认为没有其他方法可以解决获取
上下文的正确方法可能是,例如在
onLongClick()的实现中:

并且在编辑模式(即XML预览)下不会崩溃。将所有变量声明为
final
仅仅是无用的,而且常常会造成阻碍,除非由于范围的改变而需要这样做

也可以应用类似的布局动画:

int resId = R.anim.some_animation;
LayoutAnimationController animation = AnimationUtils.loadLayoutAnimation(context, resId);
this.mRecyclerView.setLayoutAnimation(animation);

获取
上下文的正确方法可能是,例如在
onLongClick()的实现中:

并且在编辑模式(即XML预览)下不会崩溃。将所有变量声明为
final
仅仅是无用的,而且常常会造成阻碍,除非由于范围的改变而需要这样做

也可以应用类似的布局动画:

int resId = R.anim.some_animation;
LayoutAnimationController animation = AnimationUtils.loadLayoutAnimation(context, resId);
this.mRecyclerView.setLayoutAnimation(animation);

您可以使用
itemView.getContext()
来获取上下文

您可以使用
itemView.getContext()
来获取上下文

被否决,问题是
如何在RecyclerView中加载XML动画
-没有回答,问题清楚地表明,无法在viewholder中获取上下文。因此,不可能调用动画。在我的解决方案中,上下文将被提供,它解决了上述代码中的动画问题,只是想知道为什么你接受这个答案,它既不能完全回答问题,也不考虑XML预览的情况(在那里不能很容易地获得上下文,这随后阻止预览从呈现)。只是比较一下,一个高质量的答案看起来不一样。也许你应该再读一遍这篇文章。很明显,缺少背景是问题所在。如果问题解决了,我不明白你会有什么问题。高质量的回答并不意味着冗长的信息。这意味着问题的直接解决方案投票表决,因为您回答了标题中的问题,这就是我们在这里讨论的问题。投票表决结果为
,问题是如何在RecyclerView中加载XML动画,但根本没有得到回答。问题清楚地表明,无法在viewholder中获取上下文。因此,不可能调用动画。在我的解决方案中,上下文将被提供,它解决了上述代码中的动画问题,只是想知道为什么你接受这个答案,它既不能完全回答问题,也不考虑XML预览的情况(在那里不能很容易地获得上下文,这随后阻止预览从呈现)。只是比较一下,一个高质量的答案看起来不一样。也许你应该再读一遍这篇文章。很明显,缺少背景是问题所在。如果问题解决了,我不明白你会有什么问题。高质量的回答并不意味着冗长的信息。这意味着问题的直接解决方案投了赞成票,因为你回答了标题中的问题,这就是我们在这里的目的。