スクロール中にGridViewのデータの一貫性を保つのに問題があります。基本的に、私は単純なビンゴ アプリに取り組んでおり、ユーザーが完全な 5x5 グリッドを表示できるように画面をスクロールできるようにしたいと考えています。私はこの質問を使用して、何が起こっているのかを理解しようとしています( Android: OnItemClick 後に GridView 配列の画像を置き換える) これを正しく理解している場合は、 getView() を変更して、各セルに再利用されたビューを使用しないようにする必要があります。これが私がこれまでに持っているものです:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final GridView gridview = (GridView) findViewById(R.id.gridview);
final Bingo bingo = new Bingo();
final String[] stuff = new String[25];
for (int i=0;i<25;i++){
stuff[i]=bingo.getValue(i);
}
stuff[12]="Free Space";
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, stuff);
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
bingo.open(position);
if (bingo.isOpen(position))
v.setBackgroundColor(Color.rgb(12, 15, 204));
else
v.setBackgroundColor(Color.rgb(128, 128, 128));
if (bingo.bingo()==true){
Toast.makeText(getApplicationContext(),
//((TextView) v).getText(),
"BINGO",Toast.LENGTH_SHORT).show();
}
}
});
}
このコードの種類は機能します。背景が変わり、私のビンゴ クラスとうまく連携しますが、スクロールすると、ランダムなセルの色が変わり、セルの値が消えて空白が残ることがあります。アダプターの宣言後に次のコードを試しましたが、デバイスにロードするとすぐにクラッシュします。
{
public View getView(int position, View convertView, ViewGroup parent){
Context mContext = null;
TextView textView= new TextView(mContext);
if (convertView == null) {
textView.setText(stuff[12]);
} else {
textView = (TextView) convertView;
}
if (bingo.isOpen(position))
textView.setBackgroundColor(Color.rgb(12, 15, 204));
else
textView.setBackgroundColor(Color.rgb(128, 128, 128));
return textView;
}
};
これをテキストビューで機能させる方法を理解するのに問題があります。これに関するヘルプは大歓迎です。