gpt4 book ai didi

java - 如何将 fragment 的上下文转换为 LifecycleOwner?

转载 作者:行者123 更新时间:2023-11-30 05:06:38 28 4
gpt4 key购买 nike

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

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'

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

最佳答案

android.content.Context 没有实现 android.arch.lifecycle.LifecycleOwner

您必须传递 AppCompatActivity 的实例,它实现了 android.arch.lifecycle.LifecycleOwner(或任何其他执行此操作的类)。

或转换 (AppCompatActivity) context,当 contextinstanceof AppCompatActivity 时。要以可靠的方式从上下文中获取 Activity ,请检查 https://stackoverflow.com/a/46205896/2413303

关于java - 如何将 fragment 的上下文转换为 LifecycleOwner?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54461138/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com