MainActivity で作成した GridView を、私の場合は GameplayController という別のクラスから更新したいと思います。
具体的には、現在 MainActivity にある gridView.setOnItemClickListener(....)... を GameplayController クラスのメソッドに単純に挿入しようとしています。
私は小さなボード ゲーム アプリを作成しています。私は、ゲームが終了するまで実行されるゲームのループを持つメソッド「play()」を作成することを考えました。MainActivity の onCreate で GridView を起動し、次にゲームを実行したいメソッドを呼び出しますが、作成した GridView を GameplayController クラス メソッド "play()" に取得して、そこから直接適切に更新できるようにする方法がわかりません。
私の MainActivity の関連部分は次のとおりです。
...
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
//Create board model, add units to player's list.
UnitArray gameBoardModel = new UnitArray();
//Run the game loop until winner found.
GameplayController.play();
//This ClickListener I don't want here, I want it in my play() method.
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int postion,
long id) {
// Toast for development help only.
Toast.makeText(MainActivity.this, "" + postion,
Toast.LENGTH_SHORT).show();
}
});
}
...
GridView を制御したいクラスの関連部分は次のとおりです。
public class GameplayController {
private static boolean gameOver = false;
/*
* Will run the game loop.
*/
public static void play() {
while (gameOver == false) {
/*
* Update the GridView from Main somehow.
*/
/*
* Will be put in correct place later.
/*
gameOver = true;
}
}
}
これは完全に間違っているかもしれませんが、LayoutInflater を使用する必要がありますか?