gpt4 book ai didi

java - Android:我应该在 recyclerview 中维护对 Activity 的引用还是有其他方法?

转载 作者:太空宇宙 更新时间:2023-11-03 12:50:11 26 4
gpt4 key购买 nike

我需要在 onBindViewHolder 中使用上下文方法(标准示例可能与 getString 或 getColor 一样常见)。到目前为止,我已经将上下文传递给 recyclerview 的构造函数,并在变量中维护了一个引用,但在我看来这似乎是一种不好的做法。有没有办法从 recyclerview 内部动态获取上下文而不将其存储为变量?

public SomeRecyclerViewClass(Activity activity) {
this.parentActivity = activity;
}

最佳答案

我看不到在构造函数中传递 Context 并将其存储在字段中的任何缺点。无论如何,您可以通过这种方式访问​​它:

public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
//Do your things
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Context context = holder.itemView.getContext();
//Do your things
}
}

为了完整起见,我发布了我通常采用的解决方案,其中还保留了对 LayoutInflater 的引用:

public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {

public Context mContext;
public LayoutInflater mInflater;

public MyAdapter(Context context) {
mContext = context;
mInflater = LayoutInflater.from(context);
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = mInflater.inflate(R.layout.row, parent, false);
//Do your things
}
}

关于java - Android:我应该在 recyclerview 中维护对 Activity 的引用还是有其他方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33120389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com