2010-02-02 12 views
5

Ich habe eine app Hauptklasse, die sie ListActivity:ein Listview in einer Schublade mit einem Listview-Implementierung bereits

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); 
    } 
} 

Ich habe in meinem XML eine Schublade enthalten, und ich versuche, ein bekommen separate Listenansicht, um in der verschiebbaren Schublade angezeigt zu werden. Ich versuche, die zweite Listenansicht mit einem inflater zu füllen:

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); 

Dies kompiliert, und läuft, aber der slidingdrawer ist völlig leer. Meine XML folgt:

<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> 

Ich fühle mich wie ich bin ein entscheidender Schritt fehlt. Ich habe von Googling keine Ressourcen zu meinem Problem gefunden, daher würde jede Hilfe sehr geschätzt werden.

Edit: Das war für ein Problem vor langer Zeit, und die Lösung, die ich fand, war nur mein Layout neu zu gestalten. Ich kann keine Antwort akzeptieren, da ich nicht die Mittel habe, sie zu testen.

+0

Ich fühle mich schlecht, weil ich eine Antwort auf diese Frage nicht akzeptieren kann. Wir haben uns entschieden, eine andere Route für unsere Benutzeroberfläche zu gehen, um dieses Problem vollständig zu vermeiden, und daher habe ich keine echte Basis, um eine Antwort zu akzeptieren :( – Parker

Antwort

0

Es sieht so aus, als könnte das Problem sein, dass Sie eine neue Instanz einer ListView aufblasen, anstatt die in Ihrer Ansicht zu verwenden.

Versuchen Sie das Listview mit ListView listView = (ListView) findViewById(R.id.content);

Dann bewerben Sie Ihren Adapter, um es zu bekommen.

+0

Beide Kombinationen führen leider zu einer NullPointerException. – Parker

0

Haben Sie

versucht
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

Ich nehme ich die Lösung gefunden haben könnte.

All diese oben genannten Lösungen funktionierten nicht für mich.

Aber dann, was ich getan habe, war onClickListener zur tatsächlichen Ansicht hinzuzufügen, die ich vom Adapter zurückgebe und BAM es fing an, für mich zu arbeiten. Hier

ist der Beispielcode:

Mai XML-Layout (nicht vollständig ein ....)

<?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> 

Jetzt behandeln Ereignisse alle klicke ich tun musste, war OnClickListener in meinem Adapter hinzufügen

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

Das ist es. Problem ist, dass ich meinen onItemClickListener nicht für diese ListView arbeiten lassen konnte. Aber gerade jetzt funktioniert Klick-Listener für mich. Eines Tages würde ich gerne herausfinden, warum das so ist.

Verwandte Themen