如何获得gridview的行和列位置?

问题描述

我正在创建一个像游戏一样的糖果迷,在其中我拍摄了三个不同的图像,将它们放在gridview中,然后在对应的行(或列)中滑动位置,如果它们匹配,则会增加得分,然后被替换。我设法将图像显示在屏幕上(尽管不是根据布局进行统一设置):

enter image description here

在我的imageAdapter.java类中,由于数组是一维的,所以尝试获取数组的列或行时遇到了一个问题:

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) {
        Arrays.fill(mThumbIds,differentShapes());

        ImageView imageView;
        if (convertView == null) {  // if it's not recycled,initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85,85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8,8,8);
        } else {
            imageView = (ImageView) convertView;
        }

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

    private Random rand = new Random();
    private int randomSizes = rand.nextInt(4) + 1;

    private int differentShapes()
    {
        Random rand = new Random();
        int randInt = rand.nextInt(3);

        switch(randInt)
        {
            case 0: return R.drawable.circle;
            case 1: return R.drawable.square;
            case 2: return R.drawable.triangle;
            default: return 0;
        }
    }
    
    private Integer[] mThumbIds = new Integer[18 * randomSizes];

}

我当时正在考虑将我需要的内容转换为二维数组,但是我仍然不得不考虑在getView()方法中分配适当的行和列来分配位置:

public class ImageAdapter extends BaseAdapter {
    ...
    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position,ViewGroup parent) {
        
        for(Integer[] ele : mThumbIds) {
            Arrays.fill(ele,differentShapes());
        }
         

        ImageView imageView;
        if (convertView == null) {  // if it's not recycled,8);
        } else {
            imageView = (ImageView) convertView;
        }

        //Don't kNow what to put in each dimension
        imageView.setimageResource(mThumbIds[???][???]);
        return imageView;
    }
    ...

    private Integer[][] mThumbIds = new Integer[9 * randomSizes][6 * randomSizes];

}

所以,我的问题是如何获得正确的尺寸以将位置放置在getView()中?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...