2016-07-04 4 views
1

Lors de l'utilisation d'un ViewPager, j'ai remarqué qu'il ne répondrait pas très rapidement, ce qui signifie qu'il ralentit lors de la commutation des fragments, un peu à la traîne. Est-ce que quelqu'un sait comment ce code pourrait causer le problème?ViewPager ne répond pas rapidement

public class List_adapter : BaseAdapter<Element> 
{ 
    public List<Element> _list; 
    FragmentOne _context; 


    public List_adapter(FragmentOne context, List<Element> list) 
    {             
    super(context, list);      
     _list = list; 
     _context = context; 
    } 
    @Override 
    public int getCount() 
    { 
     return _list.size(); 
    } 
    @Override 
    public Object getItem(int position) 
    { 
     return _list.get(position); 
    } 
    @Override 
    public long getItemId(int position) 
    { 
     return getItem(position).hashCode(); 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     LayoutInflater inflater = (LayoutInflater)getActivity().getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = inflater.inflate(R.layout.row, parent, false); 
     Element item = getItem(position); 
     TextView lbl = (TextView)view.findViewById(R.id.label); 
     TextView prop = (TextView)view.findViewById(R.id.Prop); 
     lbl.setText(item.getlabel()); 
     prop.setText(item.getprop()); 
     return view; 
    } 


} 

Répondre

1
  1. Utilisez ViewHolder pattern pour la liste lisse défilement
  2. Mettre en oeuvre Offscreen page limit pour initialisant une vue avant de le montrer à l'intérieur ViewPager
+0

Le décalage ne défilement liste pas de problème, il se produit lors du passage à travers la divers ViewPagers. En outre, j'ai essayé d'implémenter la limite de page hors écran mais cela n'a pas résolu mon problème. –

+0

Peut-être que vous en faites trop dans le fil principal? Essayez de passer la mémoire ou les opérations étendues du processeur aux threads d'arrière-plan. Le problème est trop inexact. Essayez [tracing] (https://developer.android.com/studio/profile/traceview.html) le code pour voir ce qui cause le retard. –

+0

C'est vrai que je fais tout dans le thread principal mais créer un autre thread ne résoudrait rien, car la liste est remplie dans la méthode onCreateView du fragment, et j'ai essayé de l'exécuter dans un autre thread mais ça n'a rien fait. –