为什么要在RecyclerView.ViewHolder中使用静态 [英] Why to use static with RecyclerView.ViewHolder

查看:333
本文介绍了为什么要在RecyclerView.ViewHolder中使用静态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我在onCreateViewHolder方法上创建此类的新实例,并且我猜该实例用于每个项目,为什么建议对RecyclerView.ViewHolder扩展的class使用static呢?

Why is recommended to use static for a class extended from RecyclerView.ViewHolder if I create a new instance of this class on the onCreateViewHolder method and I guess that instance is used for each item:

@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recyclerview,parent,false);
    return new RecyclerViewAdapter.RecyclerViewHolder(view);
}

@Override
public void onBindViewHolder(RecyclerViewHolder holder, int position) {

    String textTop = noticias.get(position).getHora()+ noticias.get(position).getTemperatura();

    holder.textViewTop.setText(textTop);
    holder.textViewBot.setText(noticias.get(position).getTexto());

}


public static class RecyclerViewHolder extends RecyclerView.ViewHolder{

    public TextView textViewTop;
    public TextView textViewBot;

    public RecyclerViewHolder(View view){
        super(view);
        textViewTop = (TextView) view.findViewById(R.id.textView4);
        textViewBot = (TextView) view.findViewById(R.id.textView5);
    }

}

推荐答案

内部类包含对外部类的引用.因此,这意味着RecyclerView.ViewHolder的每个实例都将包含对RecyclerView.Adapter的引用.

Inner class contains reference to the outer class. So it means that every instance of your RecyclerView.ViewHolder will contain reference to your RecyclerView.Adapter.

通过将其设置为static,可以避免保留此引用.

By making it static you avoid keeping this reference.

Oracle Java文档-嵌套类

这篇关于为什么要在RecyclerView.ViewHolder中使用静态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆