0

Ich erstellt eine RecyclerView mit zwei Spalten mit StaggeredGridLayoutManager, enthält jedes Element 2 Bilder und Text, die Größe für das erste Bild kann (284 * 572, 840 * 401 oder 283 * 232) die zweite 35 * 35 und ein Text, die Liste sieht gut aus, aber das Problem ist, dass, wenn der Benutzer nach unten scrollen das Scrollen nicht glatt und nicht kontinuierlich ist, nehmen die Bilder aus dem lokalen Speicher (Zeichen), was können wir tun Genehmigen der Scroll-Erfahrung.Scrollen ist nicht glatt in Android RecyclerView mit 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); 
     } 
    } 
} 

Einstellen der RecyclerView in einem 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); 
+0

Fantasie ein Objekt Informationen über Fantasy-Film enthält, von dort aus sind wir bekommen die ID der Bilder und den Text – user1684140

Antwort

2

Sie Ihre Bilder zur Verbesserung der Leistung cachen. zuerst sehen diese beiden Videos:

Caching UI data

The Magic of LRU Cache

dann nach dem Grund zu verstehen, und die Idee, wie man es lösen Sie Bildbibliotheken wie verwenden:

Glide

picasso

diese implementieren nt Caching-Strategie so alles, was Sie brauchen, ist eine von ihnen importieren und beispielsweise anstelle von:

this.fantasyImage.setImageResource(fantasy.getFantasyHeaderImageID()); 

Sie

können
Picasso.with(context).load(fantasy.getFantasyHeaderImageID()).into(this.fantasyImage); 
+1

Glide ist viel besser –

Verwandte Themen