猿问

在 RecyclerView.ViewHolder 中获取上下文

我想在 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 动画,这是为列表项制作动画的正确位置吗?谢谢!


慕容森
浏览 268回答 3
3回答

RISEBY

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

白板的微信

获得的正确方法Context可能是例如。在实施范围内onLongClick():@Overridepublic boolean onLongClick(View viewHolder) {    this.mRecyclerView = (SomeLinearView) viewHolder.getParent();    Context context;    if(viewHolder.isInEditMode()) {        context = ((ContextThemeWrapper) this.mRecyclerView.getContext()).getBaseContext();    } else  {        context = this.mRecyclerView.getContext();    }}这不会在编辑模式(即 XML 预览)下崩溃。将所有变量声明final为仅是无用的,并且通常会造成阻碍,除非由于更改范围而被要求这样做。并且可以应用类似的布局动画:int resId = R.anim.some_animation;LayoutAnimationController animation = AnimationUtils.loadLayoutAnimation(context, resId);this.mRecyclerView.setLayoutAnimation(animation);

慕沐林林

我不反对动画的放置。我认为这是正确的地方。关于上下文,我会在构造函数中发送它。public SimpleViewHolder(final View itemView, final SimpleAdapter.onItemClickListener listener, Context context) { //use this context...}如果您的 Recyclerview 没有上下文,那么您也可以将上下文传递给 Recycleview。我不认为有另一种方式
随时随地看视频慕课网APP

相关分类

Java
我要回答