2016-03-15 1 views
0

J'ai créé une liste en utilisant un didacticiel en ligne dans lequel j'essaie de créer une liste multicolonne. Tous les tutoriels m'ont dit que j'ai besoin d'un gonfleur mais aucun ne montre quoi mettre ou devrait être dans le fichier xml correspondant. Quelqu'un pourrait-il nous éclairer là-dessus?Quels paramètres utiliser avec android inflater

Je définis la listview dans la méthode oncreate. J'ai la méthode suivante avec un gonfleur:

public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

Mais il n'y a rien dans le fichier menu_main.xml.

Parce qu'il est multicolumned J'ai ListView dans le principal fichier XML comme suit:

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/currentChores"> 
<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/choreList" 
    android:textSize="20dp" 
    android:typeface="sans" 
    android:layout_centerHorizontal="true" 
    android:layout_below="@+id/currentChores" 
    android:paddingBottom="10dp" 
    android:paddingTop="50dp"> 
</ListView> 

    </LinearLayout> 

Et puis je fait un fichier xml séparé pour les colonnes appelées chore_list.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<TextView 
    android:id="@+id/chore_name" 
    android:layout_width="1dp" 
    android:layout_height="wrap_content" 
    android:text="Chore" 
    android:typeface="sans" 
    android:textColor="#000000" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 
<TextView 
    android:id="@+id/child_name" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:text="Child" 
    android:typeface="sans" 
    android:textColor="#000000" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 
<TextView 
    android:id="@+id/point_value" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:text="Points" 
    android:typeface="sans" 
    android:textColor="#000000" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 
</LinearLayout> 

Et J'essaye de créer cette vue de liste en utilisant la ligne suivante:

mySimpleAdapter = new SimpleAdapter(Chores.this, chores, R.layout.chore_list, new String[]{"chore","child_name","points"},new int[]{R.id.chore_name,R.id.child_name,R.id.point_value }); 
list.setAdapter(mySimpleAdapter); 

Quand je cours ce que je peux faire défiler plus bas la page qui me dit il y a quelque chose là mais je ne peux rien voir

+0

question semble peu essayer source de confusion pour le rendre plus clair – Dilip

+0

On dirait que vous êtes un ami débutant :) onCreateOptionsMenu est l'endroit où vous gonfler vue de menu :) onCreate est l'endroit où vous chargez la vue des listes :) Donc, si vous pensez comment ma listview est affichée quand il n'y a rien dans menu_main.xml c'est parce que vous regardez la mauvaise méthode :) Si vous voyez attentivement la méthode onCreate vous devez avoir som ething comme setContentView (R.layout.main); si vous ouvrez main_activity.xml vous verrez listview dans celui-ci :) Comme par pourquoi il n'y a rien dans menu_main.xml ?? c'est le code que vous verrez par défaut quand vous créez une instance de la classe d'activité –

+0

menu_main.xml comme nom suggère que c'est le menu pour l'activité principale :) Avez-vous vu trois points verticaux dans le coin supérieur droit de l'appareil ou en bas à droite de l'appareil ??? quand vous appuyez dessus, une liste d'options apparaît dans certaines applications ??? Ce n'est rien d'autre que des options de menu :) Donc, si vous voulez aussi fournir un menu avec des options comme cela, vous devez déclarer ces options dans menu_main. Parce que l'androïde ne sait pas ce que vous voulez c'est le garder vide buddy :) –

Répondre

0

La méthode onCreateOptionsMenu est utilisée pour gonfler le menu, pas ListView.Si vous voulez des vues personnalisées de chaque ligne pour votre ListView, vous devez créer une classe Adapter qui étend BaseAdapter et implémente sa méthode getView et, dans cette méthode, gonfle votre disposition xml personnalisée pour l'affichage de chaque ligne.

Il ya un article à ce sujet: https://www.caveofprogramming.com/guest-posts/custom-listview-with-imageview-and-textview-in-android.html.

EDIT: Après avoir regardé votre nouvelle question, je pense que votre problème est parce que votre source de données n'a pas de données, cela signifie chores est empty.When vous créez un SimpleAdapter, le second paramètre est votre source de données et sa clé doit correspondre au tableau de chaînes derrière ce paramètre.

0

onCreateOptionsMenu méthode:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.game_menu, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

Et your item in corresponding xml file

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/new_game" 
      android:icon="@drawable/ic_new_game" 
      android:title="@string/new_game" 
      android:showAsAction="ifRoom"/> 
    <item android:id="@+id/help" 
      android:icon="@drawable/ic_help" 
      android:title="@string/help" /> 
</menu> 

Menu

définit un menu, ce qui est un conteneur pour des éléments de menu. Un élément < menu> élément doit être le nœud racine du fichier et contenir un ou plusieurs éléments < élément> et <>.

Item

Crée un MenuItem, qui représente un seul élément dans un menu. Cet élément peut contenir un élément de menu imbriqué <> afin de créer un sous-menu .

groupe

En option, le conteneur invisible pour objet <> éléments. Il vous permet de classer par catégorie les éléments de menu afin qu'ils partagent des propriétés telles que l'état actif et la visibilité. Pour plus d'informations, reportez-vous à la section relative à la création de groupes de menus .

S'il vous plaît visitez http://developer.android.com/guide/topics/ui/menus.html

+0

avez-vous essayé cette réponse @ jacmurphy50 –

0

Vous devez utiliser gonfleur comme ce

private LayoutInflater inflater; 

inflater = LayoutInflater.from(context);