Wie kann ich Liste hinzufügen von Elementen zu meine RecyclerView adapter

in onLoadFinsih ich wieder aus der server-Liste der Filme möchte ich

dieser Liste hinzufügen zu meinen RecyclerView adapter

habe ich versucht die Erstellung einer Liste der Filme und übergeben es an meine RecyclerView adapter
dann, wenn ich die Liste der Filme aus dem server in onLoadFinish Methode, die ich hinzufügen
diese Liste, um die Liste, die ich ging in den adapter, dann informieren Sie den adapter
aber nicht arbeiten

public class MainActivity extends AppCompatActivity
    implements LoaderManager.LoaderCallbacks<List<Movie>>{

        private RecyclerView.Adapter movieRecyclerViewAdapter;
        private RecyclerView.LayoutManager mLayoutManager;
        private List<Movie> mListOfMovies;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    progressBar = (ProgressBar) findViewById(R.id.progress_bar);

    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);

    mListOfMovies = new ArrayList<>();

    movieRecyclerViewAdapter = new MovieItemAdapter(this, mListOfMovies);
    mLayoutManager = new LinearLayoutManager(this);

    recyclerView.setAdapter(movieRecyclerViewAdapter);

}
@Override
public void onLoadFinished(Loader<List<Movie>> loader, List<Movie> movies) {
    //hide progress bar after fetch data from server
    progressBar.setVisibility(View.GONE);

    mListOfMovies.clear();

    mListOfMovies.addAll(movies);

    movieRecyclerViewAdapter.notifyItemRangeChanged();

}



public class MovieItemAdapter extends RecyclerView.Adapter<MovieItemAdapter.ViewHolder> {

private List<Movie> mListOfMovies;
private Context mContext;

public MovieItemAdapter(Context context, List<Movie> movies) {
    this.mListOfMovies = movies;
    this.mContext = context;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(mContext)
            .inflate(R.layout.movie_list_item, parent, false);
    ViewHolder viewHolder = new ViewHolder(view);
    return viewHolder;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    Movie movieItem = mListOfMovies.get(position);

    holder.moviePoster.setImageBitmap(movieItem.getBitmap());
    holder.movieName.setText(movieItem.getTitle());

    DecimalFormat format = new DecimalFormat("0.0");
    holder.voteAverage.setText(format.format(movieItem.getVoteAverage()));
    holder.releaseDate.setText(movieItem.getReleaseDate());
}

@Override
public int getItemCount() {
    return mListOfMovies.size();
}

public static class ViewHolder extends RecyclerView.ViewHolder {

    public ImageView moviePoster;
    public TextView movieName;
    public TextView voteAverage;
    public TextView releaseDate;

    public ViewHolder(View itemView) {
        super(itemView);

        moviePoster = (ImageView) itemView.findViewById(R.id.movie_poster);
        movieName = (TextView) itemView.findViewById(R.id.movie_name);
        voteAverage = (TextView) itemView.findViewById(R.id.vote_average);
        releaseDate = (TextView) itemView.findViewById(R.id.release_date);
    }
}

}

InformationsquelleAutor Mohamed Mohy | 2016-11-24



2 Replies
  1. 0

    In onLoadFinish() Sie sollten das update in der Liste für den adapter mit den empfangenen Daten.

    Dann sollten Sie rufen die adapter adapter.notifyDataSetChanged().

    EDIT:

    Erstellen Sie eine Methode in adapter wie

    setMovieList(List<Movie> movies){
        mListOfMovies = movies;
        this.notifyDataSetChanged();
    } 

    und rufen Sie es von onLoadFinished():

    movieRecyclerViewAdapter.setMovieList(mListOfMovies)
    • funktioniert nicht ….
    • fügen Sie Ihren code von onLoadFinish
    • ich habe……….
    • wie ich geschrieben habe, Sie sollten hinzufügen der Elemente der Adapter, jetzt musst du nur aktualisieren Sie die Liste selbst. Erstellen Sie eine Methode in adapter wie setMovieList(Liste<Film> Filme), und rufen Sie es von onLoadFinished. Die Methode Körper sollte: mListOfMovies = Filme
    • Ich aktualisiert meine Antwort.
    • wenn ich diese Methode aufrufen, onLoadFinsh was soll ich pass die Liste, dass die form kommt, die server oder die Liste, die ich übergeben, um adapter in der onCreate-Methode
    • versuchen Sie es mit der Liste vom server kommt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.