1

在我的应用程序中,我有两个具有不同适配器的 10x10 网格。当我单击第一个网格上的项目时,它应该更改第一个和第二个网格上的图形。

battleField = (GridView) findViewById(R.id.gridView1);
battleField2 = (GridView) findViewById(R.id.gridView2);
battleField.setAdapter(new ImageAdapter(getApplicationContext()));
battleField2.setAdapter(new ImageAdapter2(getApplicationContext()));
battleField2.setEnabled(false);
battleField.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view1, int position, long id) {
        Toast.makeText(SendobjectActivity.this, "" + position, Toast.LENGTH_SHORT).show();
        ImageView img = (ImageView)view1;
        img.setImageResource(R.drawable.trafiony1);                           
        //HERE IS THE PROBLEM
        battleField2.performItemClick(view2, position, id);

    }
});

battleField2.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view2, int position, long id) {
        Toast.makeText(SendobjectActivity.this, "" + position, Toast.LENGTH_SHORT).show();                       
        ImageView img2 = (ImageView)view2;
        img2.setImageResource(R.drawable.trafiony2);
    }
});

我为两个网格实现了 onItemClickListener。单击第一个网格上的项目时,它的图形会发生变化,并且 id 喜欢调用 performItemClick 方法在第二个网格上执行相同的操作。不幸的是,我不知道如何查看我的第二个网格。有任何想法吗?

4

1 回答 1

1

将工作委托给单独的方法,并在您onClickListener调用这些方法时,而不是直接完成工作。因此,例如,而不是:

battleField2.setOnItemClickListener(new OnItemClickListener() {
  public void onItemClick(AdapterView<?> parent, View view2, int position, long id) {
    Toast.makeText(SendobjectActivity.this, "" + position,
               Toast.LENGTH_SHORT).show();                       
    ImageView img2 = (ImageView)view2;
    img2.setImageResource(R.drawable.trafiony2);
  }
});

做类似的事情:

battleField2.setOnItemClickListener(new OnItemClickListener() {
  public void onItemClick(AdapterView<?> parent, View view2, int position, long id) {
    doTheJob( parent, view2, position, id );
  }
});

protected void doTheJob(AdapterView<?> parent, View view2, int position, long id) {
    Toast.makeText(SendobjectActivity.this, "" + position,
               Toast.LENGTH_SHORT).show();                       
    ImageView img2 = (ImageView)view2;
    img2.setImageResource(R.drawable.trafiony2);
}

其他听众也一样。然后,如果您需要同时完成这两项工作,只需调用相应的方法即可。

或者(如果可能)将你的听众合二为一。

于 2012-11-26T09:59:43.917 回答