Мне нужно вернуть ListView из следующего кода.getUser () - это функция, возвращающая пользователя из базы данных, которая делает это асинхронно.Кстати, я использую Firebase.Мне нужно, чтобы он возвращал ListView после Callback при получении данных из базы данных, это код в onCallback (), но я не могу поместить в него возврат, он должен быть вне его.Но, конечно, если я выложу его за пределы, он будет выполняться в первую очередь, чем извлечение данных, поскольку он асинхронный.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
final View listViewItem = inflater.inflate(R.layout.translation_item_layout, null, true);
final TextView textViewUsername = (TextView) listViewItem.findViewById(R.id.textViewUsername);
final TextView textViewBio = (TextView) listViewItem.findViewById(R.id.textViewBio);
final TextView textViewTranslationText = (TextView) listViewItem.findViewById(R.id.textViewTranslationText);
final TextView textViewSource = (TextView) listViewItem.findViewById((R.id.textViewSource));
final TextView textViewScore = (TextView) listViewItem.findViewById((R.id.textViewScore));
final TextView textViewCommentsCount = (TextView) listViewItem.findViewById((R.id.textViewCommentsCount));
final CircleImageView imageViewProfilePicture = (CircleImageView) listViewItem.findViewById(R.id.imageProfile);
translation = translations.get(position);
getUser(new FirebaseCallback<User>() {
@Override
public void onCallback(User data) {
textViewUsername.setText(user.getNickname());
textViewBio.setText(user.getBio());
Glide.with(getContext()).load(user.getImage()).into(imageViewProfilePicture);
textViewTranslationText.setText(translation.getText());
textViewSource.setText(translation.getSource());
textViewScore.setText(String.valueOf(translation.getLikes() - translation.getDislikes()));
textViewCommentsCount.setText(String.valueOf(translation.getComments()));
//return listViewItem -> I need to do the effect of returning here, after the callback
}
});
return listViewItem; //If i leave it here, it executes asynchronously, first than the code in the onCallBack()
}
Я попытался найти способ ее решения и обнаружил, что, возможно, это можно сделать.через метод FutureTask, но никогда не использовал его раньше, и я не смог реализовать его успешно.Можете ли вы помочь мне, как это сделать?Возможно, вы знаете, как правильно его реализовать, или, возможно, есть другое решение, которое вы знаете ... Заранее спасибо.