2010-02-02 8 views
5

Tengo una aplicación cuya clase principal se extiende ListActivity:La implementación de una vista de lista dentro de un cajón deslizante con una vista de lista ya presente

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

he un cajón deslizante incluido en mi XML, y estoy tratando de conseguir una vista de lista separada para que aparezca en el cajón deslizante. Estoy tratando de poblar la segunda vista de lista mediante un inflador:

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

Esto compila y ejecuta, pero el slidingdrawer está completamente en blanco. Mi XML sigue:

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

siento que me falta un paso vital. No encontré ningún recurso en mi problema al buscar en Google, por lo que cualquier ayuda sería muy apreciada.

Editar: Esto fue por un problema hace mucho tiempo, y la solución que encontré fue simplemente rediseñar mi diseño. No puedo aceptar una respuesta ya que no tengo los medios para probarla.

+0

Me siento mal por no poder aceptar una respuesta a esta pregunta. Decidimos ir a otra ruta para nuestra interfaz de usuario para evitar este problema por completo, por lo que no tengo ninguna base real para aceptar una respuesta :( – Parker

Respuesta

0

Parece que el problema podría ser que está inflando una nueva instancia de un ListView en lugar de usar el que está en su vista.

intentar conseguir el ListView con ListView listView = (ListView) findViewById(R.id.content);

A continuación, aplicar el adaptador a la misma.

+0

Cualquiera de las combinaciones da como resultado una excepción NullPointerException, por desgracia. – Parker

0

Ha intentado

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

supongo que podría haber encontrado la solución.

Todas estas soluciones anteriores no funcionó para mí.

Pero luego, lo que hice fue agregar onClickListener a la vista real que devuelvo del adaptador y BAM comenzó a funcionar para mí.

Aquí es el código de ejemplo:

mayo del formato XML (uno no completa ....)

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

Ahora haga clic para manejar eventos todo lo que tenía que hacer era añadir OnClickListener en mi adaptador

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

Eso es todo. El problema es que no pude hacer funcionar mi onItemClickListener para este ListView. Pero ahora mismo, el oyente clic funciona para mí. Un día me encantaría descubrir la razón detrás de esto.

Cuestiones relacionadas