2010-02-02 4 views
5

J'ai une application dont la classe principale étend ListActivity:Mettre en place un listview dans un tiroir coulissant avec un listview déjà

public class GUIPrototype extends ListActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     final Cursor c = managedQuery(People.CONTENT_URI, null, null, null, null); 
     String[] from = new String[] {People.NAME}; 
     int[] to = new int[] { R.id.row_entry }; 
     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.drawer,c,from,to); 


     setListAdapter(adapter); 
     getListView().setTextFilterEnabled(true); 
    } 
} 

je un tiroir coulissant inclus dans mon XML, et je suis en train d'obtenir un liste séparée pour apparaître dans le tiroir coulissant. Je suis en train de remplir la deuxième ListView en utilisant un gonfleur:

View inflatedView = View.inflate(this, R.layout.main, null); 
ListView namesLV = (ListView) inflatedView.findViewById(R.id.content); 
String[] names2 = new String[] { "CS 345", "New Tag", "Untagged" }; 
ArrayAdapter<String> bb = new ArrayAdapter<String>(this, R.layout.main, R.id.row_entry, names2); 
namesLV.setAdapter(bb); 

Cette compile, et fonctionne, mais le slidingdrawer est complètement vide. Mon XML suit:

<SlidingDrawer 
    android:id="@+id/drawer" 
    android:handle="@+id/handle" 
    android:content="@+id/content" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_gravity="bottom"> 

    <ImageView 
     android:id="@id/handle" 
     android:layout_width="48px" 
     android:layout_height="48px" android:background="@drawable/icon"/> 

    <ListView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@id/content"/> 
</SlidingDrawer> 

Je me sens comme si je manque une étape essentielle. Je n'ai pas trouvé de ressources sur mon problème par Googling, donc toute aide serait grandement appréciée. Editer: C'était un problème il y a longtemps, et la solution que j'ai trouvée consistait simplement à revoir ma mise en page. Je suis incapable d'accepter une réponse car je n'ai pas les moyens de la tester.

+0

Je me sens mal de ne pas pouvoir accepter une réponse à cette question. Nous avons décidé d'aller un autre chemin pour notre interface utilisateur pour éviter ce problème entièrement, et donc je n'ai aucune base réelle pour accepter une réponse :( – Parker

Répondre

0

Il semble que le problème pourrait être que vous êtes en train de gonfler une nouvelle instance d'un ListView plutôt que d'utiliser celui de votre vue.

Essayez d'obtenir le ListView avec ListView listView = (ListView) findViewById(R.id.content);

Appliquez ensuite l'adaptateur lui.

+0

Soit l'une combinaison résulte dans une exception NullPointerException, malheureusement. – Parker

0

Avez-vous essayé

View inflatedView = View.inflate(this, R.layout.main, null); 
SlidingDrawer sliding=(SlidingDrawer) inflatedView.findViewById(R.id.drawer); 
ListView namesLV = (ListView) sliding.findViewById(R.id.content); 
1

Je suppose que je pourrais avoir trouvé la solution.

Toutes ces solutions ci-dessus n'ont pas fonctionné pour moi.

Mais ensuite, ce que j'ai fait était d'ajouter onClickListener à la vue réelle que je reviens de l'adaptateur et BAM il a commencé à travailler pour moi.

Voici l'exemple de code:

XML layout mai (Pas complet un ....)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/details" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <ScrollView 
     android:id = "@+id/scrolling" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <RelativeLayout 
      android:paddingBottom="30dip" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 
     <ImageView 
      android:id="@+id/listingIcon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true"/> 
     ............ 
    </ScrollView> 
    <SlidingDrawer 
     android:id="@+id/slidingDrawerShowMore" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:topOffset="132dip" 
     android:handle="@+id/handle" 
     android:content="@+id/content"> 
     <LinearLayout 
      android:id="@+id/handle" 
      android:padding = "5dip" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="@android:color/black"> 
      <TextView 
       android:id="@+id/title" 
       android:layout_alignParentRight="true" 
       android:textSize="14dp" 
       android:layout_below="@id/rate" 
       android:singleLine="true" 
       android:textColor="#3F48CC" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/show_more"/> 
     </LinearLayout> 
     <LinearLayout 
      android:id="@id/content" 
      android:layout_width="match_parent" android:layout_height="match_parent" 
      android:orientation="vertical" android:gravity="center" 
      android:background="@android:color/black"> 
      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal" 
       android:layout_gravity="center_vertical" 
       android:background="@drawable/dark_header"> 
       <TextView 
        android:id="@+id/otherTitle" 
        android:layout_alignParentRight="true" 
        android:layout_below="@id/rate" 
        android:singleLine="true" 
        android:textSize="21px" 
         android:paddingLeft="10px" 
        android:textColor="#EBEBEB" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:gravity="center_vertical" 
        android:layout_weight="0.6" 
        android:text="@string/someString"/> 
       <ProgressBar 
        android:id="@+id/pbar" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        style="@android:style/Widget.ProgressBar.Small" 
        android:layout_gravity="center_vertical"/> 
      </LinearLayout> 
      <ListView 
       android:id="@+id/listview" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"/> 
     </LinearLayout> 
    </SlidingDrawer> 
</RelativeLayout> 

Maintenant, pour gérer les événements cliquez sur tout ce que je devais faire était d'ajouter onClickListener dans mon adaptateur

public View getView(int position, View convertView, ViewGroup parent) { 
      convertView.setOnClickListener(this); 
} 

C'est tout. Le problème est que je ne pouvais pas faire fonctionner mon onItemClickListener pour ce ListView. Mais maintenant, l'écoute de clic fonctionne pour moi. Un jour, j'aimerais trouver la raison derrière cela.

Questions connexes