我不能在 switch 语句中使用 Integer[] 数组吗?

Shouldn't I be able to use an Integer[] array in a switch statement?

我认为 Integer[] 数组可以用在 switch 语句中,因为自动装箱,其中 Integer 对象和 int 基元被交换回来由编译器自动来回。但是我没有运气将我的 Integer[] 项放入 OnClick 事件的 switch 语句中。当用户单击我的数组中的图像时,我希望它以新的 activity 打开。我究竟做错了什么?在我的代码中出现红色错误,在 case 数字和 startActivity(i) 中,所以这绝对是不正确的。谢谢。

GridViewSitesAdapter.java

package org.azurespot.cutelinks;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

import org.azurespot.R;

/**
 * Created by mizu on 2/11/15.
 */
public class GridViewSitesAdapter extends BaseAdapter {

    public Context mContext;

    public GridViewSitesAdapter(Context c) {
        mContext = c;
    }

    // Keep all Images in array
    public Integer[] mThumbIds = new Integer[]{
            R.drawable.cute_overload, R.drawable.attack_of_the_cute,
            R.drawable.zoo_borns, R.drawable.cutest_paw,
            R.drawable.mochimochiland, R.drawable.baby_mugging,
            R.drawable.cutest_food, R.drawable.tiny_cute_things,
            R.drawable.etsy_robot_plush,
            R.drawable.fuck_yeah_fruits,
            R.drawable.ark_in_space,
            R.drawable.we_heart_it
    };

    @Override
    public int getCount() {
        return mThumbIds.length;
    }

    @Override
    public Object getItem(int position) {
        return mThumbIds[position];
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ImageView imageView = new ImageView(mContext);
        imageView.setImageResource(mThumbIds[position]);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setLayoutParams(new GridView.LayoutParams
                (270,270));
        imageView.setBackgroundResource(R.drawable.gridview_image_border);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (mThumbIds){
                case 0:
                    Intent i = new Intent(mContext, CuteOverloadActivity.class);
                    startActivity(i);
                    break;
                case 1:

            }

                }
            }
        });
        return imageView;
    }
}

使用setTag/getTag方法获取点击行的实际位置:

    imageView.setTag(position);
    imageView.setOnClickListener(new View.OnClickListener() {
          @Override
           public void onClick(View v) {
                 int clickedPos=Integer.parseInt(v.getTag().toString());
                    switch (clickedPos){
                    case 0:
                      ....
                }
          }
   }
 });

您的 switch 语句不应在 mThumbIds 上,而应在 position 上(因为它是决定要做什么的元素的位置)。请注意,您需要将 position 声明为 final 才能在 onClick 方法中访问它。