MyGridView
は my onCreate
here で作成されます:
@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));
...
私ImageAdapter
のクラスには、.png ファイルへint[]
の参照の「画像」が含まれています。R.drawable.
私は onItemClickListener をさらに下に持っています。これはonCreate
、どこでいつ触れられたかに応じてgridview
、「画像」配列を更新します。多くの余分なコードが取り除かれると、次のようになります。
...
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
while (count <= 6) {
...
if (count == 2 && verifyEmpty == false
&& choosePiece == true && chooseEmpty == true) {
verifyEmpty = gc.checkEmptyChoice(position);
if (verifyEmpty == true) {
gc.moveToEmpty(position, gameBoardModel,
(ImageView) v, selectedLocation);
count++;
// UPDATE THE GRIDVIEW SOMEHOW HERE.
}
break;
}
...
ネストされた の内側のgridview
後に右を更新したい。そのすぐ上のメソッドは、配列に変更を加えます。それらの変更を に反映させたいと思いcount++
if
gc.moveToEmpty(...)
images
gridview
ます。notifyDataSetChanged()
andを使用しようとしinvalidateViews
ましたが、どちらも my 内から機能させることはできませんonItemClickListener
。
-------------------解決策--------------以下の回答から-------------- ----
ImageAdapter に名前を追加する必要がありました。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageAdapter iA = new ImageAdapter(this);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(iA);
...
が使用できるように最終的である必要がありましonClick...
た。次に、次のように参照できます。
if (verifyEmpty == true) {
gc.moveToEmpty(position, gameBoardModel,
(ImageView) v, selectedLocation);
count++;
// UPDATE THE GRIDVIEW SOMEHOW HERE.
// LIKE THIS!
iA.notifyDataSetChanged();
}