How to transform the context of fragment into a LifecycleOwner?(如何将碎片的上下文转换为LifecycleOwner?)
问题描述
我有以下方案。我有一个活动,里面有一个片段。在这段代码中,我显示了来自后端数据库的一些记录。我还使用了如下所示的适配器:
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,以便我可以像在我的方法的参数中一样使用它呢?
推荐答案
android.content.Context不实现android.arch.lifecycle.LifecycleOwner。
您必须传递AppCompatActivity的实例,该实例实现android.arch.lifecycle.LifecycleOwner(或执行该操作的任何其他类)。
或CAST(AppCompatActivity) context,当context为instanceofAppCompatActivity时。要可靠地从上下文获取活动,请选中https://stackoverflow.com/a/46205896/2413303
这篇关于如何将碎片的上下文转换为LifecycleOwner?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何将碎片的上下文转换为LifecycleOwner?
 
				
         
 
            
        - 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 获取数字的最后一位 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 转换 ldap 日期 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
 
						 
						 
						 
						 
						 
				 
				 
				 
				