Предполагается, что это игра, соответствующая номеру каждой кнопки. Будет 12 разных номеров, и номера будут установлены на случайную кнопку (2 кнопки будут иметь одинаковый номер). Игрок должен нажать первую кнопку, кнопка изменит свой цвет на красный, и если игрок снова нажмет на другую кнопку, он проверит, имеет ли он тот же номер или нет, если да, то обе они останутся красными. Для кнопок я использую сетку вида кнопок. Я установил все кнопки на черный, и если я нажму кнопку, она изменит свой цвет на красный. Кнопки отображаются правильно, и все кнопки работают отлично, за исключением первой кнопки (в верхнем левом углу), она не становится красной, но все равно выполняет проверку, имеет ли она тот же номер или нет.
Мой код для getView на BaseAdapter:
gridView.setAdapter(new BaseAdapter() {
@Override
public int getCount() {
return buttons.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
if(convertView==null) buttons[position] = new Button(activity3.this);
else buttons[position] = (Button)convertView;
if(position==12) Collections.shuffle(numbers);
buttons[position].setText(String.valueOf(numbers.get(position%12)));
buttons[position].setTextSize(0);
buttons[position].setBackgroundColor(Color.BLACK);
buttons[position].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onClick && position!=indexClick) {
onClick = false;
String _strClicked = buttons[indexClick].getText().toString();
String _strNow = buttons[position].getText().toString();
if (_strClicked.equals(_strNow)) {
countSuccess++;
buttons[indexClick].setEnabled(false);
buttons[position].setEnabled(false);
buttons[position].setBackgroundColor(Color.RED);
buttons[position].setTextSize(15);
}else {
countFail++;
buttons[indexClick].setBackgroundColor(Color.BLACK);
}
if(countSuccess==11){
Intent intent = new Intent(activity3.this, activity2.class);
intent.putExtra("countFail", String.valueOf(countFail));
startActivity(intent);
finish();
}
} else {
buttons[position].setBackgroundColor(Color.RED);
indexClick = position;
onClick = true;
buttons[position].setTextSize(15);
}
}
});
return buttons[position];
}
});
Для XML:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity3"
android:id="@+id/act3_ConstraintLayout"
>
<GridView
android:id="@+id/gridview"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/act3_textViewNICKNAME"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
app:layout_constraintBottom_toTopOf="@+id/button"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/act3_textViewNilaiMin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="32dp"
android:layout_marginBottom="4dp"
app:layout_constraintBottom_toTopOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:text="HOME 26416058"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>
Я пытался использовать android: downndantFocusability = "blocksDescendants" в макете ограничений, но все же первая кнопка в левом верхнем углу не становится красной, когда я нажимаю на нее.
Я искал некоторые ссылки, но это все еще не работает:
Первая кнопка Android GridView не работает
OnClickListener не работает для первого элемента в GridView