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以便我可以在我的方法中将其用作参数?
android.content.Context不执行android.arch.lifecycle.LifecycleOwner。
您必须传递 的实例AppCompatActivity,它实现了android.arch.lifecycle.LifecycleOwner(或任何其他实现该功能的类)。
或 cast (AppCompatActivity) context,何时context是instanceof AppCompatActivity. 要以可靠的方式从上下文中获取 Activity,请查看/sf/answers/3234412751/
| 归档时间: |
|
| 查看次数: |
5763 次 |
| 最近记录: |