2012-11-26 53 views
1

在我的應用程序中我有兩個10x10網格有不同的適配器。當我點擊第一個網格上的項目時,它應該在第一個和第二個網格上更改圖形。performItemClick在另一個視圖

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

委託作業分離方法,並在你的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); 
} 

與同爲其他聽衆。那麼如果你需要做這兩個工作,只需調用相應的方法。

或者(如果可能)將您的聽衆變成一個。

+0

它沒有解決問題,當我調用battleField2.performItemClick(view2,position,id);在battleField.onItemClickListener中它不知道view2是什麼。 – user1852879

+0

當然它不知道,因爲view2是被點擊的視圖。所以你需要重新修改你的代碼以達到正確的視角。我剛剛給你瞭解如何構建代碼 - 還有一些額外的工作需要完成 –