Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android GridLayout或GridView更适合引用静态项?_Android_Xml_Gridview_Layout - Fatal编程技术网

Android GridLayout或GridView更适合引用静态项?

Android GridLayout或GridView更适合引用静态项?,android,xml,gridview,layout,Android,Xml,Gridview,Layout,我正在构建一个简单的打掉一只鼹鼠克隆体,我很难弄清楚如何进行布局。自从姜饼是新游戏以来,我就没有玩过Androiddev,而且我以前从未尝试过编写游戏,所以如果这些都是新问题,请原谅我,但我已经被困在谷歌上好几个小时了,我没有得到答案 我基本上得到了一个3x4GridLayout,在layout.xml文件中声明了12ImageView,我很难弄清楚如何从XML中创建的对象引用在代码中创建对象引用,从而使它们随机出现和消失,并处理用户触摸事件 我看到了很多关于gridview和Adapter对象

我正在构建一个简单的打掉一只鼹鼠克隆体,我很难弄清楚如何进行布局。自从<代码>姜饼<代码>是新游戏以来,我就没有玩过
Android
dev,而且我以前从未尝试过编写游戏,所以如果这些都是新问题,请原谅我,但我已经被困在谷歌上好几个小时了,我没有得到答案

我基本上得到了一个
3x4
GridLayout
,在
layout.xml
文件中声明了
12
ImageView,我很难弄清楚如何从XML中创建的对象引用在代码中创建对象引用,从而使它们随机出现和消失,并处理用户触摸事件

我看到了很多关于
gridview
Adapter
对象的信息,这些对象被用来从xml创建引用和处理触摸事件,但我不知道如何使用
GridLayout
实现这一点。我应该在
线性布局
中切换到使用
网格视图
,还是缺少一些非常简单的东西

另外,在my
Activity
子类或my
View
子类中实现
onItemClickedListener()
是否是更好的做法?我对我的
视图
子类与
XML
布局的关系有点困惑。也许我把事情复杂化了

谢谢你们的帮助,伙计们。这是我的layout.xml,如果有帮助的话

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="3"
android:rowCount="4"
android:useDefaultMargins="true"
android:background="@drawable/grass_bg"
android:id="@+id/wam_view_layout">
<ImageView
    android:id="@+id/mole1"
    android:visibility="invisible"
    android:layout_width="120dip"
    android:layout_height="140dip"
    android:contentDescription="@string/mole_description"
    android:layout_gravity="center"
    android:scaleType="fitCenter"
    android:src="@drawable/mole" />
<ImageView
    android:id="@+id/mole2"
    android:visibility="invisible"
    android:layout_width="120dip"
    android:layout_height="140dip"
    android:contentDescription="@string/mole_description"
    android:layout_gravity="center"
    android:scaleType="fitCenter"
    android:src="@drawable/mole" />

<!--pattern continues until mole12-->

</GridLayout>

在活动中执行类似操作:

private ImageView imageMole1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.layout);

    imageMole1 = (ImageView) findViewById(R.id.mole1);
    imageMole1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // handle click here e.g. call a method
            // void onMoleClicked(int moleId)
        }
    });
}
要更改显示的图像,请使用,例如:

imageMole1.setImageResource(R.drawable.mole_gone);

添加布局XML。您已经使用了一些代码,例如使用
GridView
谢谢!所以我甚至不需要创建适配器子类?您可以使用它,但我想在您的情况下,它并不是真正必要的。GridView对于大量项目具有更好的性能。此外,网格视图只需单击一次侦听器。此外,如果您有一个合适的模型,那么网格视图适配器就可以很容易地保持视图的更新。所以取决于你和你的编程技巧。。。