IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

[Fragment] Construction d'un arrayAdapter personnalisé


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2014
    Messages : 8
    Par défaut [Fragment] Construction d'un arrayAdapter personnalisé
    Bonjour!

    J'Essaye tout simplement de créer une liste avec 2 textviews, une à gauche et une à droite. J'Essaye également de leur donner une police spécifique. Je ne comprends pas pourquoi mon code ci-dessous ne crée rien à la sélection du fragment (page blanche).

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    public class MoviesFragment extends ListFragment {
     
     
    	MyArrayAdapter adapter;
     
     
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
     
    		return super.onCreateView(inflater, container, savedInstanceState);  
    	}
     
    	@Override
    	  public void onActivityCreated(Bundle savedInstanceState) {
    	    super.onActivityCreated(savedInstanceState);
     
    	ArrayList<Map<String, String>> list = buildData();  
        MyArrayAdapter adapter = new MyArrayAdapter(getActivity(), list);  
        setListAdapter(adapter);
     
    }
     
    	  private ArrayList<Map<String, String>> buildData() {
    		    ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();
    		    list.add(putData("Greek Yoghourt & Fruit","£2.25"));
    		    list.add(putData("Fruit Cobbler", "£2.25"));
    		    list.add(putData("Honey Roasted Fruit & Yoghurt", "£2.25"));          //PutData is defined below
    		    list.add(putData("Fruit Fool", "£2.25"));
    		    list.add(putData("Bircher",  "£2.25"));
    		    list.add(putData("Porridge","£1.95"));
    		    list.add(putData("Stewed Fruit Topping","£0.50"));
    		    list.add(putData("Candied Pralines","£0.50"));
    		    list.add(putData("House Bacon", "£3.75"));
    		    list.add(putData("Simply Bacon","£3.75"));
    		    list.add(putData("House Mushroom", "£3.50"));
    		    list.add(putData("Peanut Butter & Homemade Jam", "£3.50"));
    		    list.add(putData("Eggs on toast","£4.00"));
    		    list.add(putData("House Eggs","£4.75"));
    		    list.add(putData("Spanish Eggs","£4.75"));
    		    list.add(putData("Smoked Salmon Eggs","£4.75"));
    		    list.add(putData("The Full Breakfast","£5.25"));
    			list.add(putData("Chorizo Hash", "£5.25"));
    		    return list;
    		  }
     
    	  private HashMap<String, String> putData(String name, String purpose) {
    		    HashMap<String, String> item = new HashMap<String, String>();
    		    item.put("name", name);
    		    item.put("purpose", purpose);
    		    return item;
    		  }
     
     
    	public class MyArrayAdapter extends ArrayAdapter<HashMap<String, String>> {
     
            public MyArrayAdapter(Context context, ArrayList<Map<String,String>> list) {
                super(context, R.layout.row_layouts, R.id.label);
            }
     
           public MyArrayAdapter(Context context, HashMap<String, String>[] items) {
                super(context, R.layout.row_layouts, R.id.label, items);
            }
     
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
     
                View view = super.getView(position, convertView, parent);
                TextView textView1 = (TextView) view.findViewById(R.id.label);
                textView1.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/typewriter.ttf"));
                TextView textView2 = (TextView) view.findViewById(R.id.price);
                textView2.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/typewriter.ttf"));
     
                return view;
            }     
        }
     
    }

  2. #2
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut
    Bonjour,
    je pense que l'initialisation de la vue d'affichage d'un fragment se fait dans sa méthode onCreateView(...) sauf indication contraire. n'étant pas trop fan de ListFragment, je fais tout à mon vouloir malgré le peu de temps que ça me consomme (c'est déjà une habitude ) en créant un fragment simple, une view xml pour le contenu de mon fragment que j'inflate dans sa méthode onCreateView(...). Toujours à l'intérieur de cette même méthode, j'initialise ma ListView, mon adaptateur etc. Puis je passe l'adaptateur à ma ListView. Pour ton cas, différent de mon approche, je te demande d'essayer de prendre le contenu de la méthode onActivityCreated(...) et le mettre dans onCreateView(...) de ta classe ListFragment.
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2014
    Messages : 8
    Par défaut
    Bonjour!

    Merci de ta réponse!

    Pourrais-je savoir pour quelle(s) raison(s) tu évites à tout prix le ListFragment?

    Par ailleurs j'ai fait ce que tu m'as conseillé de faire (littéralement couper/coller le contenu de OnViewCreated vers OnCreateView, et le problème reste entier. Je n'ai aucune erreur à la compilation ni à l'exécution, simplement j'ai une page blanche.

    Merci d'avance pour votre aide,
    Shannou06

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 476
    Par défaut
    Tu as oublié une chose dans la réponse de MasterMbg, inflater ton fichier xml.
    Donc dans ta méthode onCreateView doit contenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
    	    Bundle savedInstanceState) {
    	View mainView = inflater.inflate(R.layout.mon_fichier_layout, container,
    		false);
    et finir par
    et surtout ton xml DOIT être configuré ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <ListView
            android:id="@id/android:list"
    />
     
        <TextView
            android:id="@id/android:empty"
     />

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2014
    Messages : 8
    Par défaut
    Ah! Merci Turvy, tu m'as partiellement aidé! Je savais qu'il fallait que le lis mon XML et mon fragment. Maintenant ma View est instanciée (inflated), car le fond est maintenant noir (" android:background="#000000"" dans mon LinearLayout). J'Ai aussi changé mon XML, mais j'avais déjà la listView correctement initialisée et ça n'a rien changé.

    Je recopie mon code en entier, mais les changements n'ont été effectués que dans OnCreateView. Je ne comprends pas. Il semblerait que l'ArrayList list soit vide, car je n'ai plus aucune erreur et mon LinearLayout est instancié.

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    public class MoviesFragment extends ListFragment {
     
     
    	MyArrayAdapter adapter;
    	ArrayList<Map<String, String>> list = buildData(); 
     
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
    		View mainView = inflater.inflate(R.layout.row_layouts, container, false);
     
    	    MyArrayAdapter adapter = new MyArrayAdapter(getActivity(), list);  
    	    setListAdapter(adapter);
    	    return mainView; 
    	}
     
    	@Override
    	  public void onActivityCreated(Bundle savedInstanceState) {
    	    super.onActivityCreated(savedInstanceState);
     
     
    }
     
    	  private ArrayList<Map<String, String>> buildData() {
    		    ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();
    		    list.add(putData("Greek Yoghourt & Fruit","£2.25"));
    		    list.add(putData("Fruit Cobbler", "£2.25"));
    		    list.add(putData("Honey Roasted Fruit & Yoghurt", "£2.25"));          //PutData is defined below
    		    list.add(putData("Fruit Fool", "£2.25"));
    		    list.add(putData("Bircher",  "£2.25"));
    		    list.add(putData("Porridge","£1.95"));
    		    list.add(putData("Stewed Fruit Topping","£0.50"));
    		    list.add(putData("Candied Pralines","£0.50"));
    		    list.add(putData("House Bacon", "£3.75"));
    		    list.add(putData("Simply Bacon","£3.75"));
    		    list.add(putData("House Mushroom", "£3.50"));
    		    list.add(putData("Peanut Butter & Homemade Jam", "£3.50"));
    		    list.add(putData("Eggs on toast","£4.00"));
    		    list.add(putData("House Eggs","£4.75"));
    		    list.add(putData("Spanish Eggs","£4.75"));
    		    list.add(putData("Smoked Salmon Eggs","£4.75"));
    		    list.add(putData("The Full Breakfast","£5.25"));
    			list.add(putData("Chorizo Hash", "£5.25"));
    		    return list;
    		  }
     
    	  private HashMap<String, String> putData(String name, String purpose) {
    		    HashMap<String, String> item = new HashMap<String, String>();
    		    item.put("name", name);
    		    item.put("purpose", purpose);
    		    return item;
    		  }
     
     
    	public class MyArrayAdapter extends ArrayAdapter<HashMap<String, String>> {
     
            public MyArrayAdapter(Context context, ArrayList<Map<String,String>> list) {
                super(context, R.layout.row_layouts, R.id.label);
            }
     
           public MyArrayAdapter(Context context, HashMap<String, String>[] items) {
                super(context, R.layout.row_layouts, R.id.label, items);
            }
     
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
     
                View view = super.getView(position, convertView, parent);
                TextView textView1 = (TextView) view.findViewById(R.id.label);
                textView1.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/typewriter.ttf"));
                TextView textView2 = (TextView) view.findViewById(R.id.price);
                textView2.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/typewriter.ttf"));
     
                return view;
            }     
        }
     
    }

    EDIT: Lorsque j'utilise un SimpleAdapter, et non un custom, la liste apparaît bien mais je ne peux pas changer la police car j'utilise l'adapter de base. C'est donc bien dans la construction de MyArrayAdapter que le problème se pose!

    Voici le code que j'utilise avec mon SimpleAdapter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     
    		View mainView = inflater.inflate(R.layout.row_layouts, container, false);
     
    	       ArrayList<Map<String, String>> list = buildData();
    	       String[] from = { "name", "purpose" };
    	       int[] to = { R.id.label, R.id.price };
     
    	       SimpleAdapter adapter = new SimpleAdapter(getActivity(), list, R.layout.row_layouts, from, to);  //A SimpleAdapter(context, data source, layout for each row, from, to)
    	       setListAdapter(adapter);
     
    	    return mainView; 
    	}
    Et voici un screenshot de ce que j'obtiens!

    Nom : Capture.PNG
Affichages : 895
Taille : 28,5 Ko


    J'Espère que cela va éclaircir le problème!
    Merci encore pour votre aide!

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 476
    Par défaut
    Je n'avais pas bien vu au début, mais il semblerait que ton adapter ne soit pas très bon. Prends exemple ici (http://stackoverflow.com/questions/2...adaptermyclass) ou ici(http://www.piwai.info/android-adapter-good-practices/)

  7. #7
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut
    Citation Envoyé par Shannou06 Voir le message
    Pourrais-je savoir pour quelle(s) raison(s) tu évites à tout prix le ListFragment?
    Bonjour,
    Ce n'est pas que j'évite à tout prix utiliser ListFragment. J'avoue ne le pas utilisé parce je n'ai pas encore eu besoin d'afficher une liste pour occuper l'entièreté du fragment.
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2014
    Messages : 8
    Par défaut
    Bonjour!

    J'Ai réussi à faire ce que je voulais:

    Nom : Capture1.PNG
Affichages : 889
Taille : 44,5 Ko

    Avec le code suivant:

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    public class MoviesFragment extends ListFragment {
     
    	MyArrayAdapter adapter; 
    	ArrayList<MyClass> myList = new ArrayList<MyClass>();
     
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     
    		   View mainView = inflater.inflate(R.layout.row_layouts, container, false);		   
    	       MyClassAdapter adapter = new MyClassAdapter(getActivity(), R.layout.row_layouts, myList);
     
    	       MyClass food = new MyClass("Greek Yoghourt & Fruit", "£2.25");
    	       MyClass food1 = new MyClass("Fruit Cobbler", "£2.25");
    	       MyClass food2 = new MyClass("Honey Roasted Fruit & Yoghurt", "£2.25");
    	       MyClass food3 = new MyClass("Fruit Fool", "£2.25");
    	       MyClass food4 = new MyClass("Porridge", "£2.25");
    	       MyClass food5 = new MyClass("Stewed Fruit Topping", "£1.95");
    	       MyClass food6 = new MyClass("Candied Pralines", "£0.50");
    	       MyClass food7 = new MyClass("House Bacon", "£0.50");
    	       MyClass food8 = new MyClass("Simply Bacon", "£3.75");
    	       MyClass food9= new MyClass("House Mushroom", "£3.75");
    	       MyClass food10 = new MyClass("Peanut Butter & Homemade Jam", "£3.50");
    	       MyClass food11 = new MyClass("Eggs on toast", "£4.00");
    	       MyClass food12 = new MyClass("House Eggs", "£4.75");
    	       MyClass food13 = new MyClass("Spanish Eggs", "£4.75");
    	       MyClass food14 = new MyClass("Smoked Salmon Eggs", "£4.75");
    	       MyClass food15 = new MyClass("The Full Breakfast", "£5.25");
    	       MyClass food16 = new MyClass("Chorizo Hash", "£5.25");
     
    	       adapter.add(food);
    	       adapter.add(food1);
    	       adapter.add(food2);
    	       adapter.add(food3);
    	       adapter.add(food4);
    	       adapter.add(food5);
    	       adapter.add(food6);
    	       adapter.add(food7);
    	       adapter.add(food8);
    	       adapter.add(food9);
    	       adapter.add(food10);
    	       adapter.add(food11);
    	       adapter.add(food12);
    	       adapter.add(food13);
    	       adapter.add(food14);
    	       adapter.add(food15);
    	       adapter.add(food16);
     
    	       setListAdapter(adapter);
     
    	    return mainView; 
    	}
     
    	  public class MyClass {
    		    public String plat;
    		    public String prix;
     
    		    public MyClass(String plat, String prix) {
    		       this.plat = plat;
    		       this.prix = prix;
    		    }
    		}
     
     
    	  public class MyClassAdapter extends ArrayAdapter<MyClass> {
    		  ViewHolder viewHolder = new ViewHolder();
    		    public class ViewHolder {
    		        TextView itemView1;
    		        TextView itemView2;
    		    }
     
    		    public MyClassAdapter(Context context, int textViewResourceId, ArrayList<MyClass> items) {
    		        super(context, textViewResourceId, items);
    		    }
     
    		    @Override
    		    public View getView(int position, View convertView, ViewGroup parent) {
    		       // Get the data item for this position
    		       MyClass mClass = getItem(position); 
    		       // Check if an existing view is being reused, otherwise inflate the view
    		       ViewHolder viewHolder; // view lookup cache stored in tag
    		       if (convertView == null) {
    		    	  viewHolder = new ViewHolder();
    		          convertView = LayoutInflater.from(getContext()).inflate(R.layout.row_layouts, parent, false);
    		          convertView.setTag(viewHolder);   
    		       }else {
    		           viewHolder = (ViewHolder) convertView.getTag();
    		       }
     
    		       // Lookup view for data population
    		       TextView tvName = (TextView) convertView.findViewById(R.id.label);
    		       TextView tvHome = (TextView) convertView.findViewById(R.id.price);
    		       // Populate the data into the template view using the data object
    		       tvName.setText(mClass.plat);
    		       tvHome.setText(mClass.prix);
     
    		       tvName.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/typewriter.ttf"));
    		       tvHome.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/typewriter.ttf"));
    		       // Return the completed view to render on screen
    		       return convertView;
    		   }
    		}
     
     
    	public class MyArrayAdapter extends ArrayAdapter<HashMap<String, String>> {
     
            public MyArrayAdapter(Context context, ArrayList<Map<String,String>> list) {
                super(context, R.layout.row_layouts, R.id.price);
            }
     
           public MyArrayAdapter(Context context, HashMap<String, String>[] items) {
                super(context, R.layout.row_layouts, R.id.price, items);
            }
     
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
     
                View view = super.getView(position, convertView, parent);
                TextView textView1 = (TextView) view.findViewById(R.id.label);
                textView1.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/typewriter.ttf"));
                TextView textView2 = (TextView) view.findViewById(R.id.price);
                textView2.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/typewriter.ttf"));
     
                return view;
            }     
        }
     
    }
    Bon vous reconnaîtrez que c'est pas idéal.. Nottament du point de vue de l'utilisateur, car le menu commence 10dp plus bas qu'il ne devrait. Il m'est impossible de le déplacer, je ne sais pourquoi.Voici mon XML:

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 
        android:background="#000000"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
       	android:layout_gravity="center_vertical"
        >
     <TextView
    		android:id="@+id/label"
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
     
    	   	android:padding="5sp"
            android:textSize="18sp"
    	   	android:textColor="#FFF"
    		/>
     
       	<LinearLayout 
    	    android:orientation="vertical"
    	    android:layout_width="0dp"
    	    android:layout_height="wrap_content"
    	   	android:layout_gravity="center_vertical"
    	   	android:paddingRight="5sp"
    	    android:layout_weight="1"
    	    > 
     
    	     <TextView android:id="@+id/price"
    	         android:layout_width="wrap_content"
    	         android:layout_height="wrap_content"
    	         android:layout_gravity="end"    
    	         android:textSize="18sp"
    	         android:textColor="#FFF" /> 
     
     
     
         <ListView 
    	        android:id="@android:id/list"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
    	        />
        <TextView
            android:id="@id/android:empty"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>
    </LinearLayout>
    Le problème viendrait-il de là?

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 476
    Par défaut
    Coté code, je te conseillerai de vraiment tout séparer, c'est à dire une classe pour le Fragment, une pour la Classe, et une pour l'adapteur. Tu vas vite galérer sinon dès que t'auras plus de contenu.
    Si tu es sur Eclipse, Ctrl+Shift+F pour aligner correctement ton code.
    sp est surtout pour les tailles de textes, utilises plutot dp sinon (ex les paddings).

    Pour l'espace en haut, c'est normal, tu as un LinearLayout avec un TextView (id = price) et la ListView. Tu as surement voulu faire un header avec 2 mots, "label" et "price", mais ton layout est mauvais, il devrait plutot ressembler à ca
    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
    38
    39
    40
    41
    42
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:background="#000000"
        android:orientation="vertical" >
     
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:orientation="horizontal"
            android:paddingRight="5dp" >
     
            <TextView
                android:id="@+id/label"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:textColor="#FFF"
                android:textSize="18sp" />
     
            <TextView
                android:id="@+id/price"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end"
                android:textColor="#FFF"
                android:textSize="18sp" />
        </LinearLayout>
     
        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
     
        <TextView
            android:id="@id/android:empty"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
     
    </LinearLayout>
    Mais, pour la raison évoquée par MasterMbg, tu ne pourrais pas gérer ton header avec un listfragment qui ne gère que les listes.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/08/2013, 00h03
  2. Réponses: 4
    Dernier message: 05/03/2013, 10h05
  3. [JBuilder 7] Construction d'executable natif
    Par renaudfaucon dans le forum JBuilder
    Réponses: 3
    Dernier message: 24/11/2006, 22h28
  4. [jAPI]Probleme de construction
    Par exe dans le forum C++Builder
    Réponses: 10
    Dernier message: 07/08/2003, 10h03
  5. Fragmentation du DD
    Par guillaume_pfr dans le forum Administration système
    Réponses: 5
    Dernier message: 05/06/2003, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo