Я создал конструктор для добавления набора строк в базу данных ROOM на Android. Добавление в базу данных в порядке. При извлечении из базы данных у меня возникают проблемы.
@Query("SELECT * FROM Movie")
public List<Movie> getAllMovies();
Мой тип возвращаемого значения - список типов фильмов. Моему адаптеру для моих recyclerViews требуется список типа List.
Кажется, я ничего не могу сделать со списком, возвращенным со всеми Cast et c, сообщая мне ошибку Error:: ie.dbs.sqlite.Movie cannot be cast to java.util.List
Как можно я преобразовал возвращенный список во что-то пригодное для использования? Если бы я мог создать новый список из моего списка, я думаю, что я был бы установлен
public class ModuleAdapter extends RecyclerView.Adapter<ModuleAdapter.ViewHolder> {
private List<Movie> movies;
//private List<Object> movies;
public static final String EXTRA_NUMBER = "ie.dbs.sqlite.EXTRA_NUMBER";
private OnItemClickListener mListener;
public interface OnItemClickListener{
void onItemClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener){
mListener = listener;}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView movie_id;
public TextView movie_name;
public TextView movie_desc;
public TextView year_released;
public TextView year_added;
public TextView rating;
public TextView year_updated;
public View layout;
public ImageView movie_cover;
public ViewHolder(View v, final OnItemClickListener listener) {
//public ViewHolder(View v) {
super(v);
layout = v;
movie_id = (TextView) v.findViewById(R.id.movie_id);
movie_name = (TextView) v.findViewById(R.id.movie_name);
movie_desc = (TextView) v.findViewById(R.id.movie_desc);
year_released = (TextView) v.findViewById(R.id.year_released);
year_added = (TextView) v.findViewById(R.id.year_added);
year_updated = (TextView) v.findViewById(R.id.year_updated);
rating = (TextView) v.findViewById(R.id.rating);
movie_cover = (ImageView) v.findViewById(R.id.movie_cover);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(listener != null){
int number = Integer.parseInt(movie_id.getText().toString());
int position = getAdapterPosition();
Intent intent = new Intent(view.getContext(), DetailsRecyclerActivity.class);
//intent.putExtra(Intent.EXTRA_TEXT,data.get(getAdapterPosition()));
intent.putExtra(EXTRA_NUMBER,number);
view.getContext().startActivity(intent);
if(position != RecyclerView.NO_POSITION){
listener.onItemClick(position);
}
}
}
});
}
}
@Override
public ModuleAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View moduleView = inflater.inflate(R.layout.module, parent, false);
ViewHolder module = new ViewHolder(moduleView, mListener);
return module;
}
public ModuleAdapter(List<Movie> dataset) {
movies = dataset;
}
/*public ModuleAdapter(List<Object> dataset) {
movies = dataset;
}*/
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
//final Map movie = (HashMap) movies.get(position);
final Map movie = (Map) movies.get(position);
holder.movie_id.setText(movie.get("Movie_ID").toString());
//holder.movie_name.setText( R.string.Title);
holder.movie_name.setText( movie.get("Movie_Name").toString());
holder.movie_desc.setText(movie.get("Movie_Description").toString());
holder.year_released.setText("Release date: " + movie.get("Year_Released").toString());
holder.year_added.setText("Date Added:" + movie.get("DateAdded").toString());
holder.rating.setText("Rating: " + movie.get("Rating").toString());
holder.year_updated.setText("Updated: " + movie.get("DateUpdated").toString());
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
URL url = new URL(RecyclerActivity.applicationContext.getResources().getString(R.string.api_url)
+movie.get("Movie_Cover").toString());
Bitmap thumb = BitmapFactory.decodeStream(url.openConnection().getInputStream());
//holder.avatar.setImageBitmap(avatar);
holder.movie_cover.setImageBitmap(thumb);//avatar in this case is the Bitmap variable name
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public int getItemCount() {
return movies.size();
}
}