У меня есть сделанный адаптер, который показывает ListView
с предметами. Информация об элементах считывается из базы данных Firestore
и вставляется в ListView с помощью запросов Firestore и установки этих данных для элемента в адаптере.
Один из параметров в моих данных Firestore - ReturnedDate
,Если поле существует, мне бы хотелось, чтобы фон элемента в списке был другого цвета.
В основном я пытаюсь сделать следующее:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
*some lines of code to set other views*
CollectionReference Ref = db.collection("Users").document(auth.getUid()).collection( "MyBorrowed" );
Query query = Ref.whereEqualTo("ID", item.getId());
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
if (document.get("ReturnedDate") == null) {
} else {
convertView.setBackgroundColor(MyBorroweAdapter.this.getContext().getResources().getColor(R.color.colorRed));
}
}
}
}
});
Проблема в том, что я получаюошибка "convertView is accessed from within inner class, needs to be final"
Однако я не могу сделать ее окончательной в адаптере ..
Есть ли способ решить эту проблему?
РЕШЕНИЕ:
Мне удалось решить эту проблему, объявив в начале адаптера:
public View layout;
Затем внутри моего getView
:
viewHolder.layout = convertedView;
В конце концов при настройкефон:
viewHolder.item_layout.setBackgroundColor(MyBorrowedAdapter.this.getContext().getResources().getColor(R.color.colorRed));
Спасибо