java - 如何将片段的上下文转换为 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'
那么如何将片段的上下文转换为 aLifecycleOwner
以便我可以在我的方法中将其用作参数?
解决方案
android.content.Context
不执行android.arch.lifecycle.LifecycleOwner
。
您必须传递 的实例AppCompatActivity
,该实例实现android.arch.lifecycle.LifecycleOwner
(或任何其他执行此操作的类)。
或 cast (AppCompatActivity) context
,什么时候context
是instanceof
AppCompatActivity
. 要以可靠的方式从上下文中获取活动,请检查https://stackoverflow.com/a/46205896/2413303
推荐阅读
- python - 去掉括号内的文本
- python-3.x - 重塑和添加维度
- python - 我的散点图只显示数据的一部分
- ruby - 如何检查字符串是否等于哈希中的任何键并根据结果编辑另一个哈希
- android - AOSP 构建模拟器无法启动/显示黑屏
- javascript - 更改 JavaScript 画布动画的背景颜色
- mysql - 使用从查询中获取的变量在触发器语句中进行比较的问题
- firebase - 未创建任何 Firebase 应用“[DEFAULT]”- 调用 Firebase App.initializeApp()
- c# - 极速查询更新mysql
- python - 在 pygame 中显示文本时遇到问题