J'ai créé un RecyclerView avec deux colonnes en utilisant StaggeredGridLayoutManager, chaque élément contient 2 images et du texte, la taille de la première image peut être (284 * 572, 840 * 401 ou 283 * 232) le second 35 * 35 et un texte, la liste paraissant très bien mais le problème est que lorsque l'utilisateur défile vers le bas le défilement n'est pas lisse et pas continu, les images prennent du stockage local (drawable), que pouvons-nous faire approuver l'expérience de défilement.Défilement n'est pas lisse dans Android RecyclerView en utilisant StaggeredGridLayout
FantasyTabAdpter.java
public class FantasyTabAdapter extends RecyclerView.Adapter<FantasyTabAdapter.MyViewHolder> {
private LayoutInflater inflater;
private ArrayList<Fantasy> fantasies;
public FantasyTabAdapter(Context context, ArrayList<Fantasy> fantasies) {
inflater = LayoutInflater.from(context);
this.fantasies = fantasies;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.fantasy_tab_item, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
final Fantasy fantasy = fantasies.get(position);
holder.setData(fantasy, position);
}
@Override
public int getItemCount() {
return fantasies.size();
}
class MyViewHolder extends RecyclerView.ViewHolder{
ImageView fantasyImage;
TextView fantasyTitle;
ImageView fantasyStatus;
public MyViewHolder(View itemView) {
super(itemView);
fantasyImage = (ImageView) itemView.findViewById(R.id.fantasy_tab_image);
fantasyTitle = (TextView) itemView.findViewById(R.id.fantasy_tab_title);
fantasyStatus = (ImageView) itemView.findViewById(R.id.fantasy_tab_status);
}
public void setData(Fantasy fantasy, int position) {
this.fantasyTitle.setText(fantasy.getFantasyHeader());
this.fantasyImage.setImageResource(fantasy.getFantasyHeaderImageID());
this.fantasyStatus.setImageDrawable(fantasy.statusImagePlsgod);
}
}
}
Réglage de la RecyclerView dans un fragment
RecyclerView myRecyclerView = (RecyclerView) rootView.findViewById(R.id.my_recycler_view);
StaggeredGridLayoutManager setLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
FantasyTabAdapter fantasyTabAdapter = new FantasyTabAdapter(getActivity(),fantasies);
myRecyclerView.setLayoutManager(setLayoutManager);
myRecyclerView.setAdapter(fantasyTabAdapter);
Fantasy est un objet contenant des informations sur le film fantastique, à partir de là, nous sommes obtenir l'identifiant des images et le texte – user1684140