看下面的android代码。 IMGS
是ImageView
的二维数组。我在onClickListener
循环中向其添加for
。如何识别哪个view
被点击了?我不想使用view.getId();
迭代所有36个元素。
private static final Integer[] Icons = {
R.drawable.r,
R.drawable.re,
R.drawable.u,
R.drawable.et,
R.drawable.w,
R.drawable.ya
};
private ImageView[][] IMGS= new ImageView[6][6];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IMGS[0][0] = (ImageView) findViewById(R.id.immg11);
for (int i=0; i < 6; i++)
{
for (int j=0; j<6; j++)
{
Drawable d = getResources().getDrawable(Icons[i]);
IMGS[i][j].setImageDrawable(d);
IMGS[i][j].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//HOW TO KNOW WHICH VIEW HAS BEEN CLICKED ?
}
});
}
}
}
答案 0 :(得分:4)
注意传递给View
的{{1}}参数?这是被点击的视图。
您可以拨打onClick(View v)
来检索其ID。
同意,但如果我使用这种方法,我必须迭代36个元素。有没有办法知道点击IMGS的索引?
您可以使用v.getId()
在每个视图中保存所需的数据,然后使用setTag()
检索它。