Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] ListView et fonction asynchrone

Nourrir plusieurs listView avec contenu différent

    9 août 2012 à 11:46:48

    Bon je continue à ramer pour pas changer,
    J'ai abandonné l'idée des map pour les paramètres de mon post (http) et donc je modifie juste les variables en conséquences (plus simple ^^)
    Alors ce que je fais c'est que je test si ma listView est visible (donc isShown) j'appel ma fonction asynchrone avec les bon paramètres.
    Mais le soucis là est que quand je la rend visible, rien ne se charge :s (j'ai du mal comprendre qlqch ^^), je montre quand même mon code :p

    package rapport.presse.cim;
    
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.ListView;
    
    
    public class first extends Fragment {
    	
    	private httpConnexion mHttpConnexion = new httpConnexion();
    	private InputStream mInputStream;
    	private List<String> mData = new ArrayList<String>();
    	private ArrayAdapter<String> mAdapter;
    	private ListView mListViewAll;
    	private ListView mListViewQuot;
    	private ListView mListViewHebd;
    	private ListView mListViewMens;
    	private ListView mListVieuwTrim;
    	private ListView mListViewAnn;
    	Button mButton1;
    	Button mButton2;
    	Button mButton3;
    	Button mButton4;
    	Button mButton5;
    	Button mButton6;
    	
    	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    		View v= inflater.inflate(R.layout.first, container, false);
    		
    		String url="http://192.168.1.100/ville.php?donnee=getL";
    		String periode = "";
    		String type = "";
    		
    		mAdapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
            
            /**===============================================
    				Gestion des cliques et listes
    		===============================================**/ 
    		//récupération des Boutons
    		mButton1 = (Button) v.findViewById(R.id.all);
    		mButton2= (Button) v.findViewById(R.id.quot);
    		mButton3 = (Button)v.findViewById(R.id.hebd);
    		mButton4 = (Button)v.findViewById(R.id.mens);
    		mButton5 = (Button)v.findViewById(R.id.trim);
    		mButton6 = (Button)v.findViewById(R.id.ann);
    		mListViewAll = (ListView) v.findViewById(R.id.ListViewAll);
    		mListViewAll.setVisibility(View.GONE);
    		mListViewAll.setAdapter(mAdapter);
    		
    		if(mListViewAll.isShown()){
    			periode = "L";
    			type = "ville";
    			new AsyncDownload().execute(url, type, periode);
    		}
    		
    		//Test action sur le bouton + visibilité du ListView
    		mButton1.setOnClickListener (new View.OnClickListener() {			
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				//new AsyncDownload().execute();
    				//mListViewAll.setVisibility(View.GONE);
    				if(mListViewAll.isShown()){
    					mListViewAll.setVisibility(View.GONE);
    				}
    				else{
    					mListViewAll.setVisibility(View.VISIBLE);
    				}
    			}
    		});
            return v;
    	}
    	
    
    	/**=======================================================
    		Class permettant le chargement des données
    	==========================================================**/ 
    	public class AsyncDownload extends AsyncTask<String, Void, Void>{
    
    		@Override
    		protected Void doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			String url = params[0];
    			String type= params[1];
    			String periode = params[2];
    			mInputStream = mHttpConnexion.getConnexionHttp(url, type, periode);
    			return null;
    		}
    		
    		@Override
    		protected void onPostExecute(Void result) {
    			super.onPostExecute(result);
    			if (mInputStream != null){
    				String res = mHttpConnexion.convertToString(mInputStream);
    				mData = mHttpConnexion.parseJsonFile(res);
    				for (String str : mData){ //for i:0; i<mData.size(); i++ ==> String str = mData.get(i)
    					mAdapter.add(str);
    				}
    				mAdapter.notifyDataSetChanged();
    			}
    		}
    		
    	}
    }
    /**===============================================
    		Gestion des listView
    ===============================================**/  
          /** 1.Récupération du ListView
           *  2. Cacher la ListView
           *  3.Création de l'adapter
           *  4.On passe nos données au composant ListView
            
           
                
    		
    		
    		
    		/**this.mListViewQuot = (ListView) v.findViewById(R.id.ListViewQuot);
            mListViewQuot.setVisibility(View.GONE);
    		ArrayAdapter<String> mTabQuot = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, tabRevues);
    		this.mListViewQuot.setAdapter(mTabQuot);
    		
    		this.mListViewHebd = (ListView) v.findViewById(R.id.ListViewHebd);
            mListViewHebd.setVisibility(View.GONE);
    		ArrayAdapter<String> mTabHebd = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, tabRevues);
    		this.mListViewHebd.setAdapter(mTabHebd);
    		
    		this.mListViewMens = (ListView) v.findViewById(R.id.ListViewMens);
    		mListViewMens.setVisibility(View.GONE);
    		ArrayAdapter<String> mTabMens = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, tabRevues);
    		this.mListViewMens.setAdapter(mTabMens);
    		
    		this.mListVieuwTrim = (ListView) v.findViewById(R.id.ListViewTrim);
    		mListVieuwTrim.setVisibility(View.GONE);
    		ArrayAdapter<String> mTabTrim = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, tabRevues);
    		this.mListVieuwTrim.setAdapter(mTabTrim);
    		
    		this.mListViewAnn = (ListView) v.findViewById(R.id.ListViewAnn);
    		mListViewAnn.setVisibility(View.GONE);
    		ArrayAdapter<String> mTabAnn = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, tabRevues);
    		this.mListViewAnn.setAdapter(mTabAnn);**/
    		
    		
    /**End
    
    
    		
    		
    		
    		mButton2.setOnClickListener(new View.OnClickListener() {
    			
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewQuot.isShown()){
    					mListViewQuot.setVisibility(View.GONE);
    				}
    				else{
    					mListViewQuot.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		
    		mButton3.setOnClickListener(new View.OnClickListener() {
    			
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewHebd.isShown()){
    					mListViewHebd.setVisibility(View.GONE);
    				}
    				else{
    					mListViewHebd.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		
    		mButton4.setOnClickListener(new View.OnClickListener() {
    			
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewMens.isShown()){
    					mListViewMens.setVisibility(View.GONE);
    				}
    				else{
    					mListViewMens.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		
    		mButton5.setOnClickListener(new View.OnClickListener() {
    			
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListVieuwTrim.isShown()){
    					mListVieuwTrim.setVisibility(View.GONE);
    				}
    				else{
    					mListVieuwTrim.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		
    		mButton6.setOnClickListener(new View.OnClickListener() {
    			
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				if(mListViewAnn.isShown()){
    					mListViewAnn.setVisibility(View.GONE);
    				}
    				else{
    					mListViewAnn.setVisibility(View.VISIBLE);
    				}
    			}
    		});
    		
    /**End
            return v;
            
    	}**/
    


    Si je retire le if je n'ai aucun souci...
    Je ne vois pas comment je pourrais faire autrement pour appeler cette fonction avec des paramètres différents en fonction du bouton sur lequel je clique :s
    • Partager sur Facebook
    • Partager sur Twitter
      10 août 2012 à 0:34:42

      Salut,

      C'est normal que tu ne charges rien. :
      mListViewAll.setVisibility(View.GONE);
      		mListViewAll.setAdapter(mAdapter);
      		
      		if(mListViewAll.isShown()){
      			periode = "L";
      			type = "ville";
      			new AsyncDownload().execute(url, type, periode);
      		}
      

      Tu définis la visibilité de ta liste à "GONE" et tu testes directement après si elle est visible, chose qu'elle ne sera jamais.
      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
        10 août 2012 à 9:50:56

        Bon j'ai trouvé mais c'est dégueulasse ^^

        package rapport.presse.cim;
        
        import java.io.InputStream;
        import java.util.ArrayList;
        import java.util.List;
        
        import android.os.AsyncTask;
        import android.os.Bundle;
        import android.support.v4.app.Fragment;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.ArrayAdapter;
        import android.widget.Button;
        import android.widget.ListView;
        
        
        public class first extends Fragment {
        	
        	private httpConnexion mHttpConnexion = new httpConnexion();
        	private InputStream mInputStream;
        	private List<String> mData = new ArrayList<String>();
        	private ArrayAdapter<String> mAdapter;
        	private ListView mListViewAll;
        	private ListView mListViewQuot;
        	private ListView mListViewHebd;
        	private ListView mListViewMens;
        	private ListView mListVieuwTrim;
        	private ListView mListViewAnn;
        	Button mButton1;
        	Button mButton2;
        	Button mButton3;
        	Button mButton4;
        	Button mButton5;
        	Button mButton6;
        	
        	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        		View v= inflater.inflate(R.layout.first, container, false);
        		
        		final String url="http://192.168.1.100/ville.php?donnee=getL";
        		/**===============================================
        				Création des adaptateurs
        		===============================================**/ 
        		mAdapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
                
                /**===============================================
        				Appel des layouts + affichage
        		===============================================**/ 
        		//récupération des Boutons
        		mButton1 = (Button) v.findViewById(R.id.all);
        		mButton2= (Button) v.findViewById(R.id.quot);
        		mButton3 = (Button)v.findViewById(R.id.hebd);
        		mButton4 = (Button)v.findViewById(R.id.mens);
        		mButton5 = (Button)v.findViewById(R.id.trim);
        		mButton6 = (Button)v.findViewById(R.id.ann);
        		mListViewAll = (ListView) v.findViewById(R.id.ListViewAll);
        		mListViewQuot = (ListView) v.findViewById(R.id.ListViewQuot);
        		mListViewAll.setVisibility(View.GONE);
                mListViewQuot.setVisibility(View.GONE);     
        		
        		
        		
        		 /**===============================================
        						Gestion des cliques
        		===============================================**/ 	
        		mButton1.setOnClickListener (new View.OnClickListener() {			
        			public void onClick(View v) {
        				mAdapter.clear();
        				new AsyncDownload().execute(url, "ville", "L");
        				mListViewAll.setAdapter(mAdapter);
        				// TODO Auto-generated method stub
        				if(mListViewAll.isShown()){
        					mListViewAll.setVisibility(View.GONE);
        				}
        				else{
        					mListViewAll.setVisibility(View.VISIBLE);
        				}
        			}
        		});
        		mButton2.setOnClickListener(new View.OnClickListener() {
        			public void onClick(View v) {
        				mAdapter.clear();
        				new AsyncDownload().execute(url, "ville", "P");
        				mListViewQuot.setAdapter(mAdapter);
        				// TODO Auto-generated method stub
        				if(mListViewQuot.isShown()){
        					mListViewQuot.setVisibility(View.GONE);
        				}
        				else{
        					mListViewQuot.setVisibility(View.VISIBLE);
        				}
        			}
        		});
                return v;
        	}
        	
        
        	/**=======================================================
        		Class permettant le chargement des données
        	==========================================================**/ 
        	public class AsyncDownload extends AsyncTask<String, Void, Void>{
        
        		@Override
        		protected Void doInBackground(String... params) {
        			// TODO Auto-generated method stub
        			String url = params[0];
        			String key= params[1];
        			String periode = params[2];
        			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
        			return null;
        		}
        		
        		@Override
        		protected void onPostExecute(Void result) {
        			super.onPostExecute(result);
        			if (mInputStream != null){
        				String res = mHttpConnexion.convertToString(mInputStream);
        				mData = mHttpConnexion.parseJsonFile(res);
        				mAdapter.clear();
        				for (String str : mData){ //for i:0; i<mData.size(); i++ ==> String str = mData.get(i)
        					mAdapter.add(str);
        				}
        				mAdapter.notifyDataSetChanged();
        			}
        		}
        		
        	}
        }
        /**===============================================
        		Gestion des listView
        ===============================================**/  
              /** 1.Récupération du ListView
               *  2. Cacher la ListView
               *  3.Création de l'adapter
               *  4.On passe nos données au composant ListView
                
               
                    
        		
        		
        		
        		/**
        		ArrayAdapter<String> mTabQuot = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, tabRevues);
        		this.mListViewQuot.setAdapter(mTabQuot);
        		
        		this.mListViewHebd = (ListView) v.findViewById(R.id.ListViewHebd);
                mListViewHebd.setVisibility(View.GONE);
        		ArrayAdapter<String> mTabHebd = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, tabRevues);
        		this.mListViewHebd.setAdapter(mTabHebd);
        		
        		this.mListViewMens = (ListView) v.findViewById(R.id.ListViewMens);
        		mListViewMens.setVisibility(View.GONE);
        		ArrayAdapter<String> mTabMens = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, tabRevues);
        		this.mListViewMens.setAdapter(mTabMens);
        		
        		this.mListVieuwTrim = (ListView) v.findViewById(R.id.ListViewTrim);
        		mListVieuwTrim.setVisibility(View.GONE);
        		ArrayAdapter<String> mTabTrim = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, tabRevues);
        		this.mListVieuwTrim.setAdapter(mTabTrim);
        		
        		this.mListViewAnn = (ListView) v.findViewById(R.id.ListViewAnn);
        		mListViewAnn.setVisibility(View.GONE);
        		ArrayAdapter<String> mTabAnn = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, tabRevues);
        		this.mListViewAnn.setAdapter(mTabAnn);**/
        		
        		
        /**End
        
        
        		
        		
        		
        		
        		
        		mButton3.setOnClickListener(new View.OnClickListener() {
        			
        			public void onClick(View v) {
        				// TODO Auto-generated method stub
        				if(mListViewHebd.isShown()){
        					mListViewHebd.setVisibility(View.GONE);
        				}
        				else{
        					mListViewHebd.setVisibility(View.VISIBLE);
        				}
        			}
        		});
        		
        		mButton4.setOnClickListener(new View.OnClickListener() {
        			
        			public void onClick(View v) {
        				// TODO Auto-generated method stub
        				if(mListViewMens.isShown()){
        					mListViewMens.setVisibility(View.GONE);
        				}
        				else{
        					mListViewMens.setVisibility(View.VISIBLE);
        				}
        			}
        		});
        		
        		mButton5.setOnClickListener(new View.OnClickListener() {
        			
        			public void onClick(View v) {
        				// TODO Auto-generated method stub
        				if(mListVieuwTrim.isShown()){
        					mListVieuwTrim.setVisibility(View.GONE);
        				}
        				else{
        					mListVieuwTrim.setVisibility(View.VISIBLE);
        				}
        			}
        		});
        		
        		mButton6.setOnClickListener(new View.OnClickListener() {
        			
        			public void onClick(View v) {
        				// TODO Auto-generated method stub
        				if(mListViewAnn.isShown()){
        					mListViewAnn.setVisibility(View.GONE);
        				}
        				else{
        					mListViewAnn.setVisibility(View.VISIBLE);
        				}
        			}
        		});
        		
        /**End
                return v;
                
        	}**/
        


        Par contre je vais vraiment devoir faire le dégueulasse en mettant le contenu de l'adaptateur dans un nouveau et pour chaque clique, sinon si j'ouvre 2 listView il va me recharger le contenu d'une dans l'autre et ça c'est pas terrible ^^
        Et bien sûr ça ne fonctionne pas -_-
        Il me recharge à chaque fois le contenu de l'adaptateur dans tous les autres pourtant je lui dis bien quand il y a un clique sur le bouton tu met dans tel adaptateur mais apparemment il le prend pas comme ça :s
        • Partager sur Facebook
        • Partager sur Twitter
          10 août 2012 à 20:33:40

          Salut,

          Tu dois attacher un adaptateur à une ListView. Si tu as N ListView, tu auras N adaptateurs.
          Sinon, si tu avais choisis la solution avec 1 ListView, ta solution n'est pas si mauvaise que ça. :)
          • Partager sur Facebook
          • Partager sur Twitter
          Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
            11 août 2012 à 9:42:26

            C'est ce que j'ai fait par la suite en fait c'est ça que je ne comprend pas.
            Enfin je m'y suis peut-être mal pris mais pour moi le click de chaque bouton sépare bien les actions à faire ^^
            Le problème d'une listView c'est comme tu disais, beaucoup de bricolage pour avoir le même affichage et je ne pourrai pas afficher ttes mes listes en même temps :s

            package rapport.presse.cim;
            
            import java.io.InputStream;
            import java.util.ArrayList;
            import java.util.List;
            
            import android.os.AsyncTask;
            import android.os.Bundle;
            import android.support.v4.app.Fragment;
            import android.view.LayoutInflater;
            import android.view.View;
            import android.view.ViewGroup;
            import android.widget.ArrayAdapter;
            import android.widget.Button;
            import android.widget.ListView;
            
            
            public class first extends Fragment {
            	
            	private httpConnexion mHttpConnexion = new httpConnexion();
            	private InputStream mInputStream;
            	private List<String> mData = new ArrayList<String>();
            	private ArrayAdapter<String> mAdapter;
            	private ArrayAdapter<String> mAdapterAll;
            	private ArrayAdapter<String> mAdapterQuot;
            	private ArrayAdapter<String> mAdapterHebd;
            	private ArrayAdapter<String> mAdapterMens;
            	private ArrayAdapter<String> mAdapterTrim;
            	private ArrayAdapter<String> mAdapterAnn;
            	private ListView mListViewAll;
            	private ListView mListViewQuot;
            	private ListView mListViewHebd;
            	private ListView mListViewMens;
            	private ListView mListViewTrim;
            	private ListView mListViewAnn;
            	Button mButton1;
            	Button mButton2;
            	Button mButton3;
            	Button mButton4;
            	Button mButton5;
            	Button mButton6;
            	
            	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            		View v= inflater.inflate(R.layout.first, container, false);
            		
            		final String url="http://192.168.1.100/ville.php?donnee=getL";
            		
            		
            		/**===============================================
            				Création des adaptateurs
            		===============================================**/ 
            		mAdapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
            		mAdapterAll = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
            		mAdapterQuot = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
            		mAdapterHebd= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
            		mAdapterMens= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
            		mAdapterTrim= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
            		mAdapterAnn= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
            		
                    /**===============================================
            				Appel des layouts + affichage
            		===============================================**/ 
            		//récupération des Boutons
            		mButton1 = (Button) v.findViewById(R.id.all);
            		mButton2= (Button) v.findViewById(R.id.quot);
            		mButton3 = (Button)v.findViewById(R.id.hebd);
            		mButton4 = (Button)v.findViewById(R.id.mens);
            		mButton5 = (Button)v.findViewById(R.id.trim);
            		mButton6 = (Button)v.findViewById(R.id.ann);
            		
            		mListViewAll = (ListView) v.findViewById(R.id.ListViewAll);
            		mListViewQuot = (ListView) v.findViewById(R.id.ListViewQuot);
            		mListViewHebd = (ListView) v.findViewById(R.id.ListViewHebd);
            		mListViewMens = (ListView) v.findViewById(R.id.ListViewMens);
            		mListViewTrim = (ListView) v.findViewById(R.id.ListViewTrim);
            		mListViewAnn = (ListView) v.findViewById(R.id.ListViewAnn);
            		mListViewAll.setVisibility(View.GONE);
                    mListViewQuot.setVisibility(View.GONE);   
            		mListViewHebd.setVisibility(View.GONE);
            		mListViewMens.setVisibility(View.GONE);
            		mListViewTrim.setVisibility(View.GONE);
            		mListViewAnn.setVisibility(View.GONE);
            		
            		
            		 /**===============================================
            						Gestion des cliques
            		===============================================**/ 	
            		mButton1.setOnClickListener (new View.OnClickListener() {			
            			public void onClick(View v) {
            				mAdapter.clear();
            				new AsyncDownload().execute(url, "ville", "L");
            				mAdapterAll = mAdapter;
            				mListViewAll.setAdapter(mAdapterAll);
            				// TODO Auto-generated method stub
            				if(mListViewAll.isShown()){
            					mListViewAll.setVisibility(View.GONE);
            				}
            				else{
            					mListViewAll.setVisibility(View.VISIBLE);
            				}
            			}
            		});
            		mButton2.setOnClickListener(new View.OnClickListener() {
            			public void onClick(View v) {
            				mAdapter.clear();
            				new AsyncDownload().execute(url, "ville", "P");
            				mAdapterAll = mAdapter;
            				mListViewQuot.setAdapter(mAdapterQuot);
            				// TODO Auto-generated method stub
            				if(mListViewQuot.isShown()){
            					mListViewQuot.setVisibility(View.GONE);
            				}
            				else{
            					mListViewQuot.setVisibility(View.VISIBLE);
            				}
            			}
            		});
            		mButton3.setOnClickListener(new View.OnClickListener() {	
            			public void onClick(View v) {
            				mAdapter.clear();
            				new AsyncDownload().execute(url, "ville", "M");
            				mListViewHebd.setAdapter(mAdapter);
            				// TODO Auto-generated method stub
            				if(mListViewHebd.isShown()){
            					mListViewHebd.setVisibility(View.GONE);
            				}
            				else{
            					mListViewHebd.setVisibility(View.VISIBLE);
            				}
            			}
            		});
            		mButton4.setOnClickListener(new View.OnClickListener() {
            			
            			public void onClick(View v) {
            				mAdapter.clear();
            				new AsyncDownload().execute(url, "ville", "T");
            				mListViewMens.setAdapter(mAdapter);
            				// TODO Auto-generated method stub
            				if(mListViewMens.isShown()){
            					mListViewMens.setVisibility(View.GONE);
            				}
            				else{
            					mListViewMens.setVisibility(View.VISIBLE);
            				}
            			}
            		});
            		mButton5.setOnClickListener(new View.OnClickListener() {
            			public void onClick(View v) {
            				mAdapter.clear();
            				new AsyncDownload().execute(url, "ville", "N");
            				mListViewTrim.setAdapter(mAdapter);
            				// TODO Auto-generated method stub
            				if(mListViewTrim.isShown()){
            					mListViewTrim.setVisibility(View.GONE);
            				}
            				else{
            					mListViewTrim.setVisibility(View.VISIBLE);
            				}
            			}
            		});
            		mButton6.setOnClickListener(new View.OnClickListener() {
            			public void onClick(View v) {
            				mAdapter.clear();
            				new AsyncDownload().execute(url, "ville", "S");
            				mListViewAnn.setAdapter(mAdapter);
            				// TODO Auto-generated method stub
            				if(mListViewAnn.isShown()){
            					mListViewAnn.setVisibility(View.GONE);
            				}
            				else{
            					mListViewAnn.setVisibility(View.VISIBLE);
            				}
            			}
            		});
                    return v;
            	}
            	
            
            	/**=======================================================
            		Class permettant le chargement des données
            	==========================================================**/ 
            	public class AsyncDownload extends AsyncTask<String, Void, Void>{
            
            		@Override
            		protected Void doInBackground(String... params) {
            			// TODO Auto-generated method stub
            			String url = params[0];
            			String key= params[1];
            			String periode = params[2];
            			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
            			return null;
            		}
            		
            		@Override
            		protected void onPostExecute(Void result) {
            			super.onPostExecute(result);
            			if (mInputStream != null){
            				String res = mHttpConnexion.convertToString(mInputStream);
            				mData = mHttpConnexion.parseJsonFile(res);
            				mAdapter.clear();
            				for (String str : mData){ //for i:0; i<mData.size(); i++ ==> String str = mData.get(i)
            					mAdapter.add(str);
            				}
            				mAdapter.notifyDataSetChanged();
            			}
            		}
            		
            	}
            }
            
            • Partager sur Facebook
            • Partager sur Twitter
              11 août 2012 à 22:20:32

              Bon, on se met d'accord sur la solution que tu adoptes parce que j'ai l'impression qu'on se perd un peu (en tout cas moi :) ). Donc oui, si tu veux pouvoir afficher toutes tes ListView en appuyant sur tous tes boutons, il te faudra autant de listes que de boutons et autant d'adaptateurs que de listes.

              Le problème ici, c'est que tu utilises toujours le même adaptateur dans chaque onClick.
              • Partager sur Facebook
              • Partager sur Twitter
              Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
                12 août 2012 à 0:55:27

                Bon j'ai viré le mAdapter, et donc je récupère juste le mData...
                Donc je clique sur mon premier bouton (2(ouverture) fois pour qu'il accepte de charger le contenu :s) ensuite j'appuie sur le second, il m'affiche le résultat du premier et là même soucis je le ferme je le rouvre et là j'ai les bonnes données ^^

                package rapport.presse.cim;
                
                import java.io.InputStream;
                import java.util.ArrayList;
                import java.util.List;
                
                import android.os.AsyncTask;
                import android.os.Bundle;
                import android.support.v4.app.Fragment;
                import android.view.LayoutInflater;
                import android.view.View;
                import android.view.ViewGroup;
                import android.widget.AdapterView;
                import android.widget.AdapterView.OnItemClickListener;
                import android.widget.ArrayAdapter;
                import android.widget.Button;
                import android.widget.ListView;
                
                
                public class first extends Fragment {
                	
                	private httpConnexion mHttpConnexion = new httpConnexion();
                	private InputStream mInputStream;
                	private List<String> mData = new ArrayList<String>();
                	//private ArrayAdapter<String> mAdapter;
                	private ArrayAdapter<String> mAdapterAll;
                	private ArrayAdapter<String> mAdapterQuot;
                	private ArrayAdapter<String> mAdapterHebd;
                	private ArrayAdapter<String> mAdapterMens;
                	private ArrayAdapter<String> mAdapterTrim;
                	private ArrayAdapter<String> mAdapterAnn;
                	private ListView mListViewAll;
                	private ListView mListViewQuot;
                	private ListView mListViewHebd;
                	private ListView mListViewMens;
                	private ListView mListViewTrim;
                	private ListView mListViewAnn;
                	Button mButton1;
                	Button mButton2;
                	Button mButton3;
                	Button mButton4;
                	Button mButton5;
                	Button mButton6;
                	
                	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                		View v= inflater.inflate(R.layout.first, container, false);
                		
                		final String url="http://192.168.1.100/ville.php?donnee=getL";
                		
                		
                		/**===============================================
                				Création des adaptateurs
                		===============================================**/ 
                		//mAdapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
                		/**mAdapterAll = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
                		mAdapterQuot = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
                		mAdapterHebd= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
                		mAdapterMens= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
                		mAdapterTrim= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);
                		mAdapterAnn= new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, mData);**/
                		
                		/**mListViewAll.setOnItemClickListener(new OnItemClickListener(){
                
                			public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                				// TODO Auto-generated method stub
                				String choix = mData[position];
                				
                			}});**/
                		
                        /**===============================================
                				Appel des layouts + affichage
                		===============================================**/ 
                		//récupération des Boutons
                		mButton1 = (Button) v.findViewById(R.id.all);
                		mButton2= (Button) v.findViewById(R.id.quot);
                		mButton3 = (Button)v.findViewById(R.id.hebd);
                		mButton4 = (Button)v.findViewById(R.id.mens);
                		mButton5 = (Button)v.findViewById(R.id.trim);
                		mButton6 = (Button)v.findViewById(R.id.ann);
                		
                		mListViewAll = (ListView) v.findViewById(R.id.ListViewAll);
                		mListViewQuot = (ListView) v.findViewById(R.id.ListViewQuot);
                		mListViewHebd = (ListView) v.findViewById(R.id.ListViewHebd);
                		mListViewMens = (ListView) v.findViewById(R.id.ListViewMens);
                		mListViewTrim = (ListView) v.findViewById(R.id.ListViewTrim);
                		mListViewAnn = (ListView) v.findViewById(R.id.ListViewAnn);
                		mListViewAll.setVisibility(View.GONE);
                        mListViewQuot.setVisibility(View.GONE);   
                		mListViewHebd.setVisibility(View.GONE);
                		mListViewMens.setVisibility(View.GONE);
                		mListViewTrim.setVisibility(View.GONE);
                		mListViewAnn.setVisibility(View.GONE);
                				
                		
                		 /**===============================================
                						Gestion des cliques
                		===============================================**/ 	
                		mButton1.setOnClickListener (new View.OnClickListener() {			
                			public void onClick(View v) {
                				//mAdapter.clear();
                				new AsyncDownload().execute(url, "ville", "L");
                				//mAdapterAll = mAdapter;
                				mAdapterAll = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, mData);
                				mListViewAll.setAdapter(mAdapterAll);
                				// TODO Auto-generated method stub
                				if(mListViewAll.isShown()){
                					mListViewAll.setVisibility(View.GONE);
                				}
                				else{
                					mListViewAll.setVisibility(View.VISIBLE);
                				}
                			}
                		});
                		mButton2.setOnClickListener(new View.OnClickListener() {
                			public void onClick(View v) {
                				//mAdapter.clear();
                				new AsyncDownload().execute(url, "ville", "P");
                				//mAdapterQuot = mAdapter;
                				mAdapterQuot = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, mData);
                				mListViewQuot.setAdapter(mAdapterQuot);
                				// TODO Auto-generated method stub
                				if(mListViewQuot.isShown()){
                					mListViewQuot.setVisibility(View.GONE);
                				}
                				else{
                					mListViewQuot.setVisibility(View.VISIBLE);
                				}
                			}
                		});
                		mButton3.setOnClickListener(new View.OnClickListener() {	
                			public void onClick(View v) {
                				//mAdapter.clear();
                				new AsyncDownload().execute(url, "ville", "M");
                				//mAdapterHebd = mAdapter;
                				mListViewHebd.setAdapter(mAdapterHebd);
                				// TODO Auto-generated method stub
                				if(mListViewHebd.isShown()){
                					mListViewHebd.setVisibility(View.GONE);
                				}
                				else{
                					mListViewHebd.setVisibility(View.VISIBLE);
                				}
                			}
                		});
                		mButton4.setOnClickListener(new View.OnClickListener() {
                			
                			public void onClick(View v) {
                				//mAdapter.clear();
                				new AsyncDownload().execute(url, "ville", "T");
                				//mAdapterMens = mAdapter;
                				mListViewMens.setAdapter(mAdapterMens);
                				// TODO Auto-generated method stub
                				if(mListViewMens.isShown()){
                					mListViewMens.setVisibility(View.GONE);
                				}
                				else{
                					mListViewMens.setVisibility(View.VISIBLE);
                				}
                			}
                		});
                		mButton5.setOnClickListener(new View.OnClickListener() {
                			public void onClick(View v) {
                				//mAdapter.clear();
                				new AsyncDownload().execute(url, "ville", "N");
                				//mAdapterTrim = mAdapter;
                				mListViewTrim.setAdapter(mAdapterTrim);
                				// TODO Auto-generated method stub
                				if(mListViewTrim.isShown()){
                					mListViewTrim.setVisibility(View.GONE);
                				}
                				else{
                					mListViewTrim.setVisibility(View.VISIBLE);
                				}
                			}
                		});
                		mButton6.setOnClickListener(new View.OnClickListener() {
                			public void onClick(View v) {
                				//mAdapter.clear();
                				new AsyncDownload().execute(url, "ville", "S");
                				//mAdapterAnn = mAdapter;
                				mListViewAnn.setAdapter(mAdapterAnn);
                				// TODO Auto-generated method stub
                				if(mListViewAnn.isShown()){
                					mListViewAnn.setVisibility(View.GONE);
                				}
                				else{
                					mListViewAnn.setVisibility(View.VISIBLE);
                				}
                			}
                		});
                        return v;
                	}
                	
                
                	/**=======================================================
                		Class permettant le chargement des données
                	==========================================================**/ 
                	public class AsyncDownload extends AsyncTask<String, Void, Void>{
                
                		@Override
                		protected Void doInBackground(String... params) {
                			// TODO Auto-generated method stub
                			String url = params[0];
                			String key= params[1];
                			String periode = params[2];
                			mInputStream = mHttpConnexion.getConnexionHttp(url, key, periode);
                			return null;
                		}
                		
                		@Override
                		protected void onPostExecute(Void result) {
                			super.onPostExecute(result);
                			if (mInputStream != null){
                				String res = mHttpConnexion.convertToString(mInputStream);
                				mData = mHttpConnexion.parseJsonFile(res);
                				//mAdapter.clear();
                				/**for (String str : mData){ //for i:0; i<mData.size(); i++ ==> String str = mData.get(i)
                					mAdapter.add(str);
                				}
                				mAdapter.notifyDataSetChanged();**/
                			}
                		}
                		
                	}
                }
                
                • Partager sur Facebook
                • Partager sur Twitter
                  12 août 2012 à 11:08:19

                  Citation : vangoeth

                  Bon j'ai viré le mAdapter, et donc je récupère juste le mData...


                  C'est ce que j'allais te proposer. Je me rends compte que le problème c'est que tu effectues une requête asynchrone. Du coup, tu lances ta requête, elle s'exécute parallèlement à la suite de ton code mais dure plus longtemps. Du coup, tu attaches parfois une liste vide et parfois une liste remplie à ton adaptateur parce qu'il n'a pas eu le temps de peupler ta liste.

                  Une solution, pas très belle je te l'accorde, serait de passer un "code" à ta requête pour savoir qu'elle adaptateur attacher les données. Tu ferais alors une condition dans ton onPostExecute pour l'adaptateur à choisir.

                  Soit cette solution, soit autant de class AsyncTask que de ListView. :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
                    12 août 2012 à 11:22:27

                    J'ai utilisé la manière "autant de fonction que de liste" ça fonctionne nickel ^^
                    Par contre je viens de remarquer que je ne sais pas scroller vers le bas et que je ne peux pas mettre de scrollLayout vu qu'il y a déjà un layou scrollable -_- (comment s'auto bloquer :p)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 août 2012 à 18:27:48

                      C'est tout à fait normal et il n'y a pas de solution à ça. Tu te heurtes à un problème d'ergonomie de ton interface.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
                        12 août 2012 à 18:52:20

                        ça c'est un peu plus embêtant :p
                        Si je dois faire à coups de TextView ça va être un beau bricolage ^^
                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 août 2012 à 19:08:28

                          En général, aucune application ne demande d'afficher autant de ListView sur un seul écran pour le problème que tu rencontres maintenant. Par contre, il existe un type de liste qui pourrait t'intéresser : ExpandableListView.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
                            12 août 2012 à 19:14:11

                            Ha je vais voir ça.
                            En fait il y en a une, l'application mail sur les samsung (qui est sûrement la même pratiquement partout, je sais pas si elle est d'android ou de samsung).
                            Mais bon je me demande si c'est vraiment des listView
                            • Partager sur Facebook
                            • Partager sur Twitter
                              12 août 2012 à 19:16:37

                              Je pourrais voir des screens de cette application ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
                                12 août 2012 à 19:22:12

                                Voila ;-)

                                Et je suppose que tu vas rire en me disant que c'est pile poile en rapport avec ExpandableListView ^^
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  12 août 2012 à 19:26:19

                                  Voilà, c'est exactement ce type de liste que je t'ai donné plus haut. :)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
                                    12 août 2012 à 19:31:08

                                    Bon va falloir que je trouve un tuto qui ne crée pas d'adaptateur personnalisé, et donc qui ne dérive pas notre activité de cet adaptateur ^^
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    [Android] ListView et fonction asynchrone

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown