使用RecyclerView Android加载列表中的所有数据

问题描述 投票:2回答:2

我正在使用RecyclerView来显示list中的数据。但是RecyclerView只加载用户可见的行数据。

由于我的list只有10-12项,我想立刻加载所有这些。如何使用RecyclerView处理这个问题?

recycler view fragment.Java

public class RecyclerViewFragment extends Fragment {
List<Movie> movieList = new ArrayList<>();

RecyclerView myRecyclerView;
MyMovieAdapter myMovieAdapter;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.reccycler_view_frament,container,false);

    Movie movie = new Movie("ABC","1-1-1");
    movieList.add(movie);
    movie = new Movie("PLK","4-4-4");
    movieList.add(movie);
    movie = new Movie("XYZ","2-2-2");
    movieList.add(movie);
    movie = new Movie("ZMMD","3-3-3");
    movieList.add(movie);
    movie = new Movie("ABC","1-1-1");
    movieList.add(movie);
    movie = new Movie("PLK","4-4-4");
    movieList.add(movie);
    movie = new Movie("XYZ","2-2-2");
    movieList.add(movie);
    movie = new Movie("ZMMD","3-3-3");
    movieList.add(movie);
    movie = new Movie("ABC","1-1-1");
    movieList.add(movie);
    movie = new Movie("PLK","4-4-4");
    movieList.add(movie);
    movie = new Movie("XYZ","2-2-2");
    movieList.add(movie);
    movie = new Movie("ZMMD","3-3-3");
    movieList.add(movie);
    movie = new Movie("ABC","1-1-1");
    movieList.add(movie);
    movie = new Movie("PLK","4-4-4");
    movieList.add(movie);
    movie = new Movie("XYZ","2-2-2");
    movieList.add(movie);
    movie = new Movie("ZMMD","3-3-3");
    movieList.add(movie);
    movie = new Movie("ABC","1-1-1");
    movieList.add(movie);
    movie = new Movie("PLK","4-4-4");
    movieList.add(movie);
    movie = new Movie("XYZ","2-2-2");
    movieList.add(movie);
    movie = new Movie("ZMMD","3-3-3");
    movieList.add(movie);
    movie = new Movie("ABC","1-1-1");
    movieList.add(movie);
    movie = new Movie("PLK","4-4-4");
    movieList.add(movie);
    movie = new Movie("XYZ","2-2-2");
    movieList.add(movie);
    movie = new Movie("ZMMD","3-3-3");
    movieList.add(movie);
    movie = new Movie("ABC","1-1-1");
    movieList.add(movie);
    movie = new Movie("PLK","4-4-4");
    movieList.add(movie);
    movie = new Movie("XYZ","2-2-2");
    movieList.add(movie);
    movie = new Movie("ZMMD","3-3-3");
    movieList.add(movie);


    myRecyclerView = view.findViewById(R.id.recyclerView);
    myMovieAdapter = new MyMovieAdapter(movieList);
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
    myRecyclerView.setLayoutManager(layoutManager);
    myRecyclerView.setItemAnimator(new DefaultItemAnimator());
    myRecyclerView.setAdapter(myMovieAdapter);

    return view;
  }
}

my movie adapter.Java

public class MyMovieAdapter extends RecyclerView.Adapter<MyMovieAdapter.MyMoviewHolder> {

List<Movie> movieList;

public MyMovieAdapter(List<Movie> movieList){
    this.movieList = movieList;
}

@NonNull
@Override
public MyMoviewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

    View view = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.movie_adapter,viewGroup,false);
    return new MyMoviewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull MyMoviewHolder myMoviewHolder, int i) {

    Log.d("MOVIETEST","NAME = "+movieList.get(i).getMovieName());
    myMoviewHolder.movieNameTV.setText(movieList.get(i).getMovieName());
    myMoviewHolder.movieReleaseDateTV.setText(movieList.get(i).getReleaseDate());
}

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

public class MyMoviewHolder extends RecyclerView.ViewHolder{

    AppCompatTextView movieNameTV, movieReleaseDateTV;

    public MyMoviewHolder(@NonNull View itemView) {
        super(itemView);
        movieNameTV = itemView.findViewById(R.id.name);
        movieReleaseDateTV = itemView.findViewById(R.id.release_date);
    }
}

}

movie.Java

public class Movie {

private String movieName;
private String releaseDate;

public Movie(String movieName, String releaseDate){
    this.movieName = movieName;
    this.releaseDate = releaseDate;
}
public String getMovieName() {
    return movieName;
}

public void setMovieName(String movieName) {
    this.movieName = movieName;
}

public String getReleaseDate() {
    return releaseDate;
}

public void setReleaseDate(String releaseDate) {
    this.releaseDate = releaseDate;
}

}

movie_adapter.xml

<android.support.v7.widget.CardView
android:elevation="3dp"
android:background="#9372"
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="50dp"
xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout
        android:weightSum="10"
        android:layout_gravity="center_vertical"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.AppCompatTextView
            android:layout_width="0dp"
            android:layout_weight="5"
            android:layout_height="wrap_content"
            android:id="@+id/name"
            android:gravity="center_horizontal"
            android:layout_gravity="center_horizontal"
            android:text="ABC"
            />
        <android.support.v7.widget.AppCompatTextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/release_date"
            android:layout_weight="5"
            android:gravity="center_horizontal"
            android:layout_gravity="center_horizontal"
            android:text="1-1-1"
            />

    </LinearLayout>

</android.support.v7.widget.CardView>
android android-recyclerview recycler-adapter recyclerview-layout
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.