Mein RecyclerView enthält Häkchen vor den Filmen, die gesehen werden. Ich benutze notifyDatasetChanged()
nach dem Sortieren meiner RecyclerView. Nach dem Klicken auf die Menüoptionen ändern sich die Häkchen nicht, auch wenn sich die Elemente ändern. Sie bleiben am selben Ort.notifyDatasetChanged() funktioniert nicht nach dem Sortieren RecyclerView
Hier ist ein Teil meiner Tätigkeit Klasse:
public class SearchActivity extends AppCompatActivity {
MoviesAdapter adapter;
List<Movie> movies = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter = new MovieAdapter(movies, SearchActivity.this);
recyclerView.setAdapter(adapter);
fetchMovies("ascending");
}
private void fetchMovies(String order) {
movies.clear();
movies.addAll(response.body().getMovies(order));
adapter.notifyDatasetChanged();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.ascending:
fetchMovies("ascending");
adapter.notifyDatasetChanged();
return true;
case R.id.descending:
fetchMovies("descending");
adapter.notifyDatasetChanged();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
Mein MovieAdapter
:
public class MovieAdapter extends RecyclerView.Adapter<MovieAdapter.MovieViewHolder> {
private List<Movie> movies;
private final int rowLayout;
private final Context context;
public MovieAdapter(List<Movie> movies, Context context) {
this.movies= movies;
this.rowLayout = R.layout.movie_item;
this.context = context;
}
@Override
public MovieViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
return new MovieViewHolder(view);
}
@Override
public void onBindViewHolder(final MovieViewHolder holder, @SuppressLint("RecyclerView") final int position) {...}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getItemCount() {
return movies.size();
}
public void notifyNewData(List<Movie> movies) {
this.movies= movies;
notifyDataSetChanged();
}
static class MovieViewHolder extends RecyclerView.ViewHolder {...}
}
Adapter ist verantwortlich für alle Arbeiten. Post Adapter Code –
Was ist die Antwort in: movies.add (response.body(). GetMovies (Reihenfolge)); –
@play_err_ Ich hole Filme von einer API mit Retrofit – RandomyzeEverything