java - 代码较短,因此用相同的值填充数组

标签 java android arrays image gridview

对于我的“内存”游戏,我使用 GridView 来显示 12 张卡片。
一开始,牌都是一样的。

在我找到的所有示例中,您都会看到类似于此代码的内容,用于将图片 id 添加到 ImageAdapter:

 private Integer[] mThumbIds = {     
        R.drawable.card_back, R.drawable.card_back,
        R.drawable.card_back, R.drawable.card_back,
        R.drawable.card_back, R.drawable.card_back,
        R.drawable.card_back, R.drawable.card_back,
        R.drawable.card_back, R.drawable.card_back,
        R.drawable.card_back, R.drawable.card_back
    };

有没有更短、更干净、更好的方法? 像这样的东西:

private Integer[] mThumbIds = new Integer[11];
Arrays.fill(mThumbIds, R.drawable.card_back);

全类:

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import java.util.Arrays;

public class ImageAdapter extends BaseAdapter {
    private Context mContext;

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

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

    public Object getItem(int position) {
        return null;
    }

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

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {
            // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(150, 150));
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }

    // references to our images

    Integer[] mThumbIds = new Integer[11];
    Arrays.fill(mThumbIds, R.drawable.card_back);


       /*   R.drawable.card_back, R.drawable.card_back,
            R.drawable.card_back, R.drawable.card_back,
            R.drawable.card_back, R.drawable.card_back,
            R.drawable.card_back, R.drawable.card_back,
            R.drawable.card_back, R.drawable.card_back,
            R.drawable.card_back, R.drawable.card_back
    };*/

}

最佳答案

实际上,就是这样 - 您可以使用 java.util.Arrays#fill :

Arrays.fill(mThumbIds, R.drawable.card_back);

关于java - 代码较短,因此用相同的值填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30816368/

相关文章:

Java 编译器 API 类加载器

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

java - 如何在tomcat中部署kuali CM?

java - 在 Java 中使用 Kotlin 库

java - 将对象转换为字节数组,反之亦然,无需序列化

arrays - 距Matlab中的线集合一定距离的表面积,类似于轮廓?

java - Android Studio AsyncTask 返回对象困难

java - 如何使用 openCV 或 OCR tesseract 从图像中提取文本?

objective-c - 如何使用 c 型数组作为 ivar?

android - Phimp.me 项目的外部 native 构建问题