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
为instanceof
AppCompatActivity
时。要可靠地从上下文获取活动,请选中https://stackoverflow.com/a/46205896/2413303
这篇关于如何将碎片的上下文转换为LifecycleOwner?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何将碎片的上下文转换为LifecycleOwner?
基础教程推荐
- 在螺旋中写一个字符串 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01