如何将片段的上下文转换为 LifecycleOwner?

Ioa*_* P. 6 java android android-room android-livedata

我有以下场景。我有一个包含片段的活动。在这个片段中,我显示了来自后端数据库的一些记录。我也在使用一个看起来像这样的适配器:

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

onBindViewHolder我试图检查 Romm 数据库中是否存在特定电影但我收到此错误:

Wrong 1st argument type. Found: 'android.content.Context', required: 'android.arch.lifecycle.LifecycleOwner'
Run Code Online (Sandbox Code Playgroud)

那么如何将片段的上下文转换为 aLifecycleOwner以便我可以在我的方法中将其用作参数?

Mar*_*ler 7

android.content.Context不执行android.arch.lifecycle.LifecycleOwner

您必须传递 的实例AppCompatActivity,它实现了android.arch.lifecycle.LifecycleOwner(或任何其他实现该功能的类)。

或 cast (AppCompatActivity) context,何时contextinstanceof AppCompatActivity. 要以可靠的方式从上下文中获取 Activity,请查看/sf/answers/3234412751/