Как преобразовать контекст фрагмента в LifecycleOwner? - PullRequest
0 голосов
/ 31 января 2019

У меня есть следующий сценарий.У меня есть активность, которая содержит фрагмент.В этом фрагменте я показываю некоторые записи из внутренней базы данных.Я также использую адаптер, который выглядит следующим образом:

public class MovieAdapter extends PagedListAdapter<Movie, MovieAdapter.MovieViewHolder> {
    private Context context;

    public MovieAdapter(Context context) {this.context = context;}

    @NonNull
    @Override
    public MovieViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        //Create the view
    }

    @Override
    public void onBindViewHolder(@NonNull final MovieViewHolder holder, int position) {
        Movie movie = getItem(position);
        String title = movie.title;
        holder.titleTextView.setText(title);

        MovieRepository movieRepository = new MovieRepository(context);
        LiveData<Movie> liveData = movieRepository.retrieveFavoriteMovie(movie.id);
        liveData.observe(context, m -> { //Error
            if(m != null) {
                boolean favorite = m.favorite;
                if(favorite) {
                    //Do something
                } else {
                    //Do something else
                }
            }
        });
    }

    class MovieViewHolder extends RecyclerView.ViewHolder {
        ImageView favoriteImageView;
        TextView titleTextView;

        MovieViewHolder(View itemView) {
            super(itemView);
            titleTextView = itemView.findViewById(R.id.title_text_view);                favoriteImageView = itemView.findViewById(R.id.favorite_image_view);
        }
    }
}

В onBindViewHolder я пытаюсь проверить, существует ли определенный фильм в базе данных Romm, но я получаю эту ошибку:

Wrong 1st argument type. Found: 'android.content.Context', required: 'android.arch.lifecycle.LifecycleOwner'

Итак, как преобразовать контекст фрагмента в LifecycleOwner, чтобы я мог использовать его в качестве аргумента в моем методе?

1 Ответ

0 голосов
/ 31 января 2019

android.content.Context не реализует android.arch.lifecycle.LifecycleOwner.

, вам нужно будет передать экземпляр AppCompatActivity, который реализует android.arch.lifecycle.LifecycleOwner (или любой другой класс, который это делает).

или приведение (AppCompatActivity) context, когда context является экземпляром AppCompatActivity.

...