Défilement entre fragments très lent (ViewPagerIndicator)
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 :aie:
j'aimerais recevoir vos opinions pour que je puisse amélioré mon application ;)
pour le problème que j'ai, voici le code
MainActivityFragment
Code:
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);
}
} |
FragmentPagerAdapter
Code:
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;
} |
fragment
Code:
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);
}
} |
return une Arraylist charge adapter pour ListView
Code:
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;
} |
Merci