У меня проблема именно в моем BaseAdapter. Я пытаюсь изменить цвет кнопки только для определенных букв, которые я нахожу в них, но когда я пытаюсь это сделать, цвет меняет все кнопки в системе, что я могу сделатьdo?
Более конкретно, в классе MainActivity у меня есть два списка: userAnswer и newList.При создании класса в onCreate () я добавляю определенные ответы A, B, C и т. Д. Пользователю.и я хотел бы добавить следующие буквы в userAnswer после выбора buttonAddLetter, только я хочу, чтобы эти новые буквы меняли цвет на другой, а не на другой.Все работает, однако проблема в том, что все буквы меняются на разные цвета, хотя в BaseAdapter я проверяю, приходят ли данные из newList, если да, меняю цвет.Что я делаю неправильно?Почему цвет меняется для всех кнопок?
Спасибо за помощь.
GridViewAnswerAdapter.class
public class GridViewAnswerAdapter extends BaseAdapter {
private List<String> answer;
private Context context;
private MainActivity mainActivity;
public GridViewAnswerAdapter(List<String> answer, Context context, MainActivity mainActivity) {
this.answer = answer;
this.context = context;
this.mainActivity = mainActivity;
}
@Override
public int getCount() {
return answer.size();
}
@Override
public Object getItem(int position) {
return answer.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Button buttonAnswerAdapter = null;
if (convertView == null) {
if (answer.get(position).equals(" ")) {
buttonAnswerAdapter = new Button(context);
buttonAnswerAdapter.setLayoutParams(new GridView.LayoutParams(100, 100));
buttonAnswerAdapter.setPadding(8, 8, 8, 8);
buttonAnswerAdapter.setBackgroundColor(Color.BLUE);
}
//I want to change color button only where newList add some new letter, //everything is ok, but it's change every button colors, why?
else if(mainActivity.newList.size() != 0){
if (mainActivity.newList.get(position).equals(answer.get(position))) {
buttonAnswerAdapter = new Button(context);
buttonAnswerAdapter.setLayoutParams(new GridView.LayoutParams(100, 100));
buttonAnswerAdapter.setPadding(8, 8, 8, 8);
buttonAnswerAdapter.setBackgroundColor(Color.BLACK);
buttonAnswerAdapter.setTextColor(Color.RED);
buttonAnswerAdapter.setText(String.valueOf(mainActivity.newList.get(position)));
}
}
else if(mainActivity.userAnswer.get(position).equals(answer.get(position))) {
//Create new button
buttonAnswerAdapter = new Button(context);
buttonAnswerAdapter.setLayoutParams(new GridView.LayoutParams(100, 100));
buttonAnswerAdapter.setPadding(8, 8, 8, 8);
buttonAnswerAdapter.setBackgroundColor(Color.BLUE);
buttonAnswerAdapter.setTextColor(Color.GREEN);
buttonAnswerAdapter.setText(String.valueOf(answer.get(position)));
}
else
{
Toast.makeText(context, "Something is wrong!", Toast.LENGTH_SHORT).show();
}
}
else {
buttonAnswerAdapter = (Button) convertView;
}
return buttonAnswerAdapter;
}
}
MainActivity.class
public class MainActivity extends AppCompatActivity {
List<String> userAnswer = new ArrayList<>();
List<String> newList = new ArrayList<>();
GridViewAnswerAdapter gridViewAnswerAdapter;
GridView gridViewAnswer;
Button buttonAddLetter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridViewAnswer = findViewById(R.id.gridViewAnswer);
buttonAddLetter = findViewById(R.id.buttonWskazówka);
buttonAddLetter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addMore();
}
});
userAnswer.add(0, "A");
userAnswer.add(1, "B");
userAnswer.add(2, "C");
userAnswer.add(3, "D");
userAnswer.add(4, "E");
userAnswer.add(5, "F");
userAnswer.add(6, "G");
gridViewAnswerAdapter = new GridViewAnswerAdapter(userAnswer, getApplicationContext(), MainActivity.this);
gridViewAnswer.setAdapter(gridViewAnswerAdapter);
gridViewAnswerAdapter.notifyDataSetChanged();
}
private void addMore()
{
newList.clear();
newList.addAll(userAnswer);
newList.set(0, "A");
newList.set(1, "B");
newList.set(2, "C");
gridViewAnswerAdapter = new GridViewAnswerAdapter(userAnswer, getApplicationContext(), MainActivity.this);
gridViewAnswer.setAdapter(gridViewAnswerAdapter);
gridViewAnswerAdapter.notifyDataSetChanged();
}
}
Я добавляю картинки, потому что я не знаю, как полностью объяснить, чего я хотел бы достичь:
На 1 изображении у меня есть представление списка с 6 кнопками, наНа втором рисунке у нас есть список (новый список, который добавляет 0,1,2 - A, B, C на указатель) кнопок только другого цвета.Проблема в том, что я хотел бы добиться результата от 3-го изображения, то есть, когда я нажимаю на носок, я хочу, чтобы вновь добавленные буквы имели совершенно другой цвет и те, которые уже были в том цвете, который был.
введите описание изображения здесь
введите описание изображения здесь
введите описание изображения здесь