为什么要在RecyclerView.ViewHolder中使用static

mar*_*704 5 android android-viewholder recycler-adapter android-recyclerview

为什么推荐使用staticclass扩展从RecyclerView.ViewHolder,如果我创建这个类的一个新的实例onCreateViewHolder方法,我想该实例用于每个项目:

@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);
    }

}
Run Code Online (Sandbox Code Playgroud)

Dam*_*lak 17

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

通过制作它static你可以避免保留这个参考.

Oracle Java文档 - 嵌套类