android中开关盒的替代方案
我有一个带有30个图像的android中开关盒的替代方案,android,switch-statement,Android,Switch Statement,我有一个带有30个图像的recyclerview,点击特定图像,我将打开一个显示不同图像的新活动。我已将图像上载到服务器并从那里访问图像。当点击recyclerview`打开我的活动时,我通过intent传递位置,以便知道单击了哪个图像,然后我在活动中使用switch case并加载我想要的任何图像。我已经编写了30个switch case,因为我有30个图像。除此之外还有其他选择吗。我不想使用if和else if public class ModelLineUpAdapter extends
recyclerview,点击特定图像,我将打开一个显示不同图像的新活动。我已将图像上载到服务器并从那里访问图像。当点击
recyclerview`打开我的活动时,我通过intent传递位置,以便知道单击了哪个图像,然后我在活动中使用switch case并加载我想要的任何图像。我已经编写了30个switch case,因为我有30个图像。除此之外还有其他选择吗。我不想使用if和else if
public class ModelLineUpAdapter extends RecyclerView.Adapter<ModelLineUpAdapter.MyViewHolder> {
private Context context;
private List<Bikers> bikersList;
public ModelLineUpAdapter(List<Bikers> bikersList,Context context) {
this.bikersList=bikersList;
this.context = context;
}
public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public ImageView bikesImageView;
public TextView nameTextView, priceTextView;
private Button brocheurebutton;
private final Context context;
public MyViewHolder(View itemView) {
super(itemView);
context = itemView.getContext();
bikesImageView = itemView.findViewById(R.id.bikelistitemImageview);
nameTextView = itemView.findViewById(R.id.bikelistitemname);
priceTextView = itemView.findViewById(R.id.bikelistitemprice);
brocheurebutton = itemView.findViewById(R.id.bikelistitembutton);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(context, ModelLineUpInnerActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("position",getAdapterPosition());
context.startActivity(intent);
}
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.bikelistitem, null);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Bikers bikers = bikersList.get(position);
holder.nameTextView.setText(bikers.getBikename());
holder.priceTextView.setText(bikers.getBikeprice());
Glide.with(context).load(bikers.getBikeImageUrl()).into(holder.bikesImageView);
}
@Override
public int getItemCount() {
//Log.i(TAG, "getItemCount: "+bikersList.size());
return bikersList == null ? 0 : bikersList.size();
}
}
公共类ModelLineUpAdapter扩展了RecyclerView.Adapter{
私人语境;
私人车手名单;
公共ModelLineUpAdapter(列表、上下文){
this.bikersList=bikersList;
this.context=上下文;
}
公共静态类MyViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
公共图像视图bikesImageView;
公共文本视图名称文本视图、价格文本视图;
私人按钮;
私人最终语境;
公共MyViewHolder(查看项目视图){
超级(项目视图);
context=itemView.getContext();
bikesImageView=itemView.findviewbyd(R.id.bikelistitemImageview);
nameTextView=itemView.findViewById(R.id.bikelistitemname);
priceTextView=itemView.findViewById(R.id.bikelistitemprice);
brocheurebutton=itemView.findViewById(R.id.bikelistitembutton);
setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
意向意向=新意向(上下文,ModelLineUpInnerActivity.class);
intent.setFlags(intent.FLAG\u活动\u新任务);
intent.putExtra(“位置”,getAdapterPosition());
背景。开始触觉(意图);
}
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=布局更平坦。从(上下文)。充气(R.layout.bikelistitem,null);
返回新的MyViewHolder(视图);
}
@凌驾
公共无效onBindViewHolder(MyViewHolder,int位置){
Bikers Bikers=bikersList.get(位置);
holder.nameTextView.setText(bikers.getBikename());
holder.priceTextView.setText(bikers.getBikeprice());
Glide.with(context).load(bikers.getBikeImageUrl())到(holder.bikesImageView)中;
}
@凌驾
public int getItemCount(){
//Log.i(标记“getItemCount:+bikerList.size());
返回bikersList==null?0:bikersList.size();
}
}
只需在您的
ModelLineUpInnerActivity中传递图像url并接收即可
@Override
public void onClick(View v) {
Intent intent = new Intent(context, ModelLineUpInnerActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("position",getAdapterPosition());
intent.putExtra("IMG",bikersList.get(getAdapterPosition()).getBikeImageUrl());
context.startActivity(intent);
}
向我们展示您的代码,并解释如何无法使用图像索引数组/数据库。@MorrisonChang我的recyclerview右侧有30个图像,因此我正在传递被单击项目的位置。那么我是否需要编写30个切换案例,或者是否有更好的方法?实现recyclerviewshow适配器的单击侦听器class@NileshRathod我已经编辑了这个问题,请看一看