[英]How to identify the source of a context object in android java?
概述
我正在 java 中处理 android 应用程序。我的产品可以被客户和供应商视为列表。
问题
我希望能够在初始化适配器时使用传递给AdapterClass class 的上下文 object 作为参数,以识别适配器是用于通过特定于客户的活动还是特定于供应商的活动来查看产品。
这将不再需要两个单独的适配器类来向客户和供应商展示产品,也不需要为两者实现单独的功能。
为此,在适配器内部,我需要识别接收到的上下文的来源。
我该怎么做呢?
public class AdapterClass extends RecyclerView.Adapter<AdapterClass.MyViewHolder> {
Context context;
List<String> productList;
public AdapterClass(Context context, List<String> productList){
this.context=context;
this.productList = productList;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//these if-else conditions are dummy code
if(context is from ActivityVendor){
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.vendor_list_item_layout, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
else if(context is from ActivityCustomer){
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.customer_list_item_layout, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
if(context is from ActivityVendor){
//code for vendor
}
else if(context is from ActivityCustomer){
//code for customer
}
}
@Override
public int getItemCount() {
return this.productList.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
TextView textView;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
if(context is from ActivityVendor){
imageView=itemView.findViewById(R.id.image);
textView=itemView.findViewById(R.id.text);
}
else if(context is from ActivityCustomer){
imageView=itemView.findViewById(R.id.image2);
textView=itemView.findViewById(R.id.text2);
}
}
}
要确定代码应该做什么,基于它运行的上下文通常是次优的(并不是说不能这样做 - 但在一个Activity
中,这是没有意义的)。 最常见的人可能想要数据绑定,例如。 一个groupId
,然后显示CardView
布局的任一视图类型 ID,具体取决于当前用户组。 同时对于 MAD,情况更确切地说,一旦用户具有不同的角色/组,就可以简单地为他们提供他们自己的导航图......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.