2010-12-14 52 views
2

je dois faire un listview qui a une liste de noms, et aussi, aligné à gauche, mais dans le même domaine, le sexe de la personne, homme ou femmePuis-je mettre du texte à gauche et à droite des éléments d'une liste?

est possible de le faire? Comment?

exemples de code bienvenue

EDIT

J'essaie avec la première réponse de l'utilisateur, et je suis arrivé cette exception: 12-14 22:39:56.191: ERROR/AndroidRuntime(917): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView

c'est le code de l'élément XML je fais:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 
     <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Left side" 
     android:layout_alignParentLeft="true"/> 
     <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Right side" 
     android:layout_alignParentRight="true"/> 
</RelativeLayout> 

et c'est le code où j'ai ma liste:

public class PendingInvitations extends ListActivity { 

...... 
..... 
....  
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    private List<String> usernames=new ArrayList<String>(); 
     for (int i=0;i<friends.size();i++) 
       { 
       usernames.add(i,friends.get(i).getFullName()); 
       } 


       setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item2, usernames)); 
+0

je peux faire la liste, mais je ne sais pas comment mettre un autre texte sur le même élément, mais aligné à droite – NullPointerException

Répondre

2

ce serait le point de vue qui est utilisée pour chaque cellule

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" > 
     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Left side" android:layout_alignParentLeft="true"/> 
     <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Right side" android:layout_alignParentRight="true"/> 
    </RelativeLayout> 

ceci est un exemple puisque je ne sais pas où votre connaissance est à des listes, si le xml ci-dessus a été appelé « temp.xml » vous utiliser dans la fonction setlistadapter

import android.app.ListActivity; 
    import android.os.Bundle; 
    import android.widget.ArrayAdapter; 

    public class FooList extends ListActivity extends BaseAdapter { 
     String[] listItems = {"item 1", "item 2 ", "list", "android", "item 3", "foobar", "bar", }; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.layout_with_listview); 

      // implement your own adapter 

     } 

    } 
public View getView(int position, View convertView, ViewGroup parent) { 
       // A ViewHolder keeps references to children views to avoid unneccessary calls 
       // to findViewById() on each row. 
       ViewHolder holder; 

       // When convertView is not null, we can reuse it directly, there is no need 
       // to reinflate it. We only inflate a new View when the convertView supplied 
       // by ListView is null. 
       if (convertView == null) { 
        convertView = mInflater.inflate(R.layout.temp, null); 

        // Creates a ViewHolder and store references to the two children views 
        // we want to bind data to. 
        holder = new ViewHolder(); 
        holder.left = (TextView) convertView.findViewById(R.id.left); 
        holder.right = (TextView) convertView.findViewById(R.id.right); 

        convertView.setTag(holder); 
       } else { 
        // Get the ViewHolder back to get fast access to the TextView 
        // and the ImageView. 
        holder = (ViewHolder) convertView.getTag(); 
       } 

       // Bind the data efficiently with the holder. 

       holder.left.setText("left text"); 
       holder.right.setText("right text"); 

       return convertView; 
      } 

    class ViewHolder 
    { 
     public TextView left; 
     public TextView right; 
    } 
+0

et comment écrire ce que je veux sur le côté droit du champ? – NullPointerException

+0

aussi il plantage ... je suis en train d'éditer le premier message avec le crash et le code que j'essaie – NullPointerException

+0

vous devez implémenter votre propre adaptateur de liste et implémenter la fonction "getView", regardez cet exemple http://developer.android.com /resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html et faites très attention à la fonction getView, dans l'exemple où il est écrit "convertView = mInflater.inflate (R.layout. list_item_icon_text, null); " c'est où vous voulez utiliser la mise en page temp.xml – slim

0

Chaque élément d'un ListView doit être une vue. Cela inclut ViewGroups. Vous pouvez donc utiliser n'importe quelle disposition pour organiser plusieurs vues dans un élément ListView.

+0

wow, avez-exemple de code à ce sujet, mais travailler? – NullPointerException

+0

Jetez un coup d'œil à la réponse de Slim. –