亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 RecyclerView.ViewHolder 中獲取上下文

在 RecyclerView.ViewHolder 中獲取上下文

慕容森 2021-06-11 14:05:33
我想在 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 動畫,這是為列表項制作動畫的正確位置嗎?謝謝!
查看完整描述

3 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

你可以itemView.getContext()用來獲取上下文


查看完整回答
反對 回復 2021-06-30
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

獲得的正確方法Context可能是例如。在實施范圍內onLongClick():


@Override

public 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);


查看完整回答
反對 回復 2021-06-30
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

我不反對動畫的放置。我認為這是正確的地方。關于上下文,我會在構造函數中發送它。


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

 //use this context...


}

如果您的 Recyclerview 沒有上下文,那么您也可以將上下文傳遞給 Recycleview。我不認為有另一種方式


查看完整回答
反對 回復 2021-06-30
  • 3 回答
  • 0 關注
  • 313 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號