performItem单击另一个视图

时间:2012-11-26 09:57:24

标签: java android

在我的应用程序中,我有两个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方法在第二个网格上执行相同操作。不幸的是,我不知道如何查看我的第二个网格。有什么想法吗?

1 个答案:

答案 0 :(得分: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);
}

和其他听众一样。然后,如果你需要做两个工作,只需调用相应的方法。

或(如果可能的话)将您的听众变成一个。