У меня проблема с моим GridView.Я использую его, чтобы упростить, и у меня есть тот же код, что и в учебнике
public class CustomGrid extends ArrayAdapter<MuserObject> implements View.OnClickListener {
private ArrayList<MuserObject> musers;
Context context;
private static class ViewHolder {
GridViewItem image, image2;
}
public CustomGrid(ArrayList<MuserObject> musers, Context context) {
super(context, R.layout.grid_single, musers);
this.musers = musers;
this.context = context;
}
@Override
public void onClick(View v) {
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final MuserObject muser = getItem(position);
final CustomGrid.ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new CustomGrid.ViewHolder();
final LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.grid_single, parent, false);
viewHolder.image = convertView.findViewById(R.id.image);
viewHolder.image2 = convertView.findViewById(R.id.image2);
convertView.setTag(viewHolder);
} else {
viewHolder = (CustomGrid.ViewHolder) convertView.getTag();
}
Picasso.get().load(muser.getImage()).into(viewHolder.image);
// Change to green background
if (muser.isDone()) {
viewHolder.image2.setBackgroundColor(Color.parseColor("#ff669900"));
}
return convertView;
}
}
И в нижней части кода вы можете видеть, что я проверяю, является ли текущий объект isDone () и если даЯ хочу изменить цвет квадрата, но когда я делаю это (только для одного объекта), он меняет вид сетки на большее количество мест
Вот некоторые фотографии
Исходный вид сетки
Это произошло, когда я установил isDone (true) только для первого элемента
Можете ли вы помочь мне, что я должен сделать, чтобы изменить зеленый только на первом изображении, пожалуйста?Если вам нужно больше кода или информации, я дам вам.Большое спасибо за ваши советы.