Bonjour,
mon problème c'est que lorsque je défille entre les fragments, ça prend du temps et ce bloque parfois
ce que j'ai detécté c'est que lorsque j'entre sur une fragment il charge les données du fragment suivant
ce que je cherche c'est qu'il charge que les données du fragment actuel
j'ai fais du comparaison entre mon app et d'autre application, la mien est très lent
j'aimerais recevoir vos opinions pour que je puisse amélioré mon application
pour le problème que j'ai, voici le code
MainActivityFragment
FragmentPagerAdapter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public class MainActivityFragment extends FragmentActivity { TestFragmentAdapter mAdapter; ViewPager mPager; PageIndicator mIndicateur; @Override protected void onCreate(Bundle SaveInstanceState) { super.onCreate(SaveInstanceState); setContentView(R.layout.activity_main); mAdapter = new TestFragmentAdapter(getSupportFragmentManager()); mPager = (ViewPager)findViewById(R.id.pager); mPager.setAdapter(mAdapter); mIndicateur = (TitlePageIndicator)findViewById(R.id.indicator); mIndicateur.setViewPager(mPager); } }
fragment
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 @Override public Fragment getItem(int position) { Fragment fragment = new AlauneFragment(); switch (position) { case 0: fragment = new AlauneFragment(); break; case 1: fragment = new DepecheFragment(); break; case 2: fragment = new SportFragment(); break; case 3: fragment = new EconomieFragment(); break; case 4: fragment = new RegionFragment(); break; } // TODO Auto-generated method stub return fragment; }
return une Arraylist charge adapter pour ListView
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); cfr = new ConfigFragment(getActivity()); flag = cfr.isConnectingToInternet(); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if(flag){ asyncTask = new loadListView(); asyncTask.isThreadRunnning.set(true); asyncTask.execute(); }else{ Log.e("CNX","CNX Echoue"); } } //////////////////////AsyncTask @Override protected String doInBackground(Integer... args) { songsList = cfr.remplirListView(URL); return null; } @Override protected void onPostExecute(String result) { if (getActivity() != null) { mList=(ListView)v.findViewById(R.id.AlauneListe); adapter=new LazyAdapterFragment(getActivity(), songsList); mList.setAdapter(adapter); } }
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 public ArrayList<HashMap<String, String>> remplirListView(String URL){ XMLParser parser = new XMLParser(); String xml = parser.getXmlFromUrl(URL); // getting XML from URL if(xml!=null){ xml=Normalizer .normalize(xml, Normalizer.Form.NFD) .replaceAll("[^\\p{ASCII}]", "");} Document doc = parser.getDomElement(xml); NodeList nl = doc.getElementsByTagName(ConfigFragment.KEY_ITEM); for (int i = 0; i < nl.getLength(); i++) { HashMap<String, String> map = new HashMap<String, String>(); Element e = (Element) nl.item(i); map.put(ConfigFragment.KEY_TITLE, parser.getValue(e, ConfigFragment.KEY_TITLE)); map.put(ConfigFragment.KEY_DESC, parser.getValue(e, ConfigFragment.KEY_DESC)); map.put(ConfigFragment.KEY_AUTHOR, parser.getValue(e, ConfigFragment.KEY_AUTHOR)); map.put(ConfigFragment.KEY_PUBDATE, parser.getValue(e, ConfigFragment.KEY_PUBDATE)); String sPhoto = parser.getValue(e, ConfigFragment.KEY_PHOTO); sPhoto=sPhoto.replaceAll(" ", "%20"); map.put(ConfigFragment.KEY_PHOTO, sPhoto); map.put(ConfigFragment.KEY_LINK, parser.getValue(e, ConfigFragment.KEY_LINK)); songsList.add(map); } return songsList; }
Partager