android中开关盒的替代方案

android中开关盒的替代方案,android,switch-statement,Android,Switch Statement,我有一个带有30个图像的recyclerview,点击特定图像,我将打开一个显示不同图像的新活动。我已将图像上载到服务器并从那里访问图像。当点击recyclerview`打开我的活动时,我通过intent传递位置,以便知道单击了哪个图像,然后我在活动中使用switch case并加载我想要的任何图像。我已经编写了30个switch case,因为我有30个图像。除此之外还有其他选择吗。我不想使用if和else if public class ModelLineUpAdapter extends

我有一个带有30个图像的
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我已经编辑了这个问题,请看一看