У меня стандартное автозаполнение текста с обычным кастомным адаптером. Однако, как вы можете видеть на фотографии, android связывает часы с несколькими позициями (некоторые из них неверны). Если вы посмотрите, вы увидите, что адаптер правильно сузил его до двух вариантов. Однако у «ола» не должно быть часов, а у «полониса» - правильных часов. Возникает ошибка - часы на "ola" соответствуют часам "polonis", тогда как их не должно быть ни одного. Две информации, которые могут быть полезны:
Во-первых, я использовал несколько методов Log.d, и неправильные часы всегда связаны с другим notev2, чем тот, который присутствует в позиции. Во-вторых, если я добавлю одну строку текста, заполнив это текстовое представление адаптера точкой, проблемы исчезнут.
А это мой код адаптера в getView
@Override
public View getView(int position, View view, @NonNull ViewGroup parent) {
if (view == null) {
view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.autocompletelayout, parent, false);
}
Notev2 notev2 = getItem(position);
TextView titlePlace = (TextView) view.findViewById(R.id.autocomplete_title);
titlePlace.setText(notev2.getTitle_v2());
String slocation = "" + notev2.getLocation_v2();
if (slocation.contains("zioiu"))
slocation = "";
TextView locationPlace = (TextView) view.findViewById(R.id.autocomplete_location);
locationPlace.setText(slocation);
TextView hoursPlace = (TextView) view.findViewById(R.id.autocomplete_openingHours);
if (!day.equals("Hello")) {
String[] openingHoursv2 = {notev2.getOpening_hours_1_v2(), notev2.getOpening_hours_2_v2(), notev2.getOpening_hours_3_v2()};
List<String> allOpeningHours = new ArrayList<>(Arrays.asList(notev2.getOpening_hours_1_v2()
, notev2.getOpening_hours_2_v2(),
notev2.getOpening_hours_3_v2()));
for (String openingHours : openingHoursv2) {
if (!openingHours.equals("")) {
Log.d("NoNoteAdapter", openingHours + notev2.getTitle_v2() + " " + position);
if (getBelongs(day, openingHours)) {
String toAppend = getClockPart(openingHours);
if (getOpenVsClosed(toAppend)) hoursPlace.setTextColor(Color.parseColor("#12D529"));
else hoursPlace.setTextColor(Color.parseColor("#D80E0E"));
hoursPlace.append(toAppend);
}
} else { #if the dotted version
hoursPlace.append(.);
}
}
}
return view;
}