2012-07-30 36 views
5

Tengo que hacer una vista de lista horizontal dentro de una vista de lista vertical. Ambas vistas de lista pueden tener cualquier cantidad de elementos y ambas deben ser desplazables.ListView dentro de otra ListView

¿Cómo lo conseguiré porque he leído que Android no es compatible con la jerarquía de vista de lista?

Gracias!

CUSTOM UI

+0

Scrollviews no puede ser anidado. [Ver más aquí] [1]. [1]: http://stackoverflow.com/questions/4490821/scrollview-inside-scrollview – Snicolas

Respuesta

3

Para lograr esto esto, usted tiene que hacer lo siguiente ::

  1. Crear un ScrollView vertical que tiene solo LinearLayout.
  2. Ahora cree listviews horizontales dentro de este LinearLayout como se muestra en el siguiente ejemplo:

Por lo tanto esto le permitirá de desplazamiento vertical en la pantalla, así como horizontalmente en cada ListView.

por ej.

<ScrollView> 

    <LinearLayout..... //this a vertically oriented layout 
    > 
    <ListView/> 
    . 
    .//This listViews Are Horizontal 
    . 
    <ListView> 
    </Linearlayout> 
</ScrollView>  

Editar: Adición dinámicamente ListView a la LinearLayout.

LinearLayout ll=(LinearLayout)findViewById(R.id.id_given_in_the_XML_file); 
ListView lv=new ListView(Activityname.this); 
. 
. 
. 
Do All ListView Processing Here 
. 
. 
. 
lv.setAdapater(adapter); 

ll.addView(lv); 
+0

Scrollviews no pueden anidarse pero ... pero ... pero se puede tomar un solo progenitor LinearLayout y dentro de él, puede mantener múltiples ListViews.Hence el ScrollView tendrá un solo elemento Linearlayout. –

+0

Pero en este caso, no sé la cantidad de listViews que debo hacer, ya que son aleatorias. ¿Cómo lo lograré? – gauravsapiens

+0

Por favor, consulte mi Editar –

0
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/ll" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Accounts" /> 
<ListView 
    android:id="@+id/Accounts" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:scrollbars="vertical" /> 
<View 
    android:layout_width="fill_parent" 
    android:layout_height="2dp" 
    android:background="#FF4500" /> 
<TextView 
    android:id="@+id/textView1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Contacts" /> 
<ListView 
    android:id="@+id/con_listView" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:scrollbars="vertical" /> 
</LinearLayout> 
0

No es posible pero se puede hacer un truco que he utilizado y trabajado para mí también. Puede detener (interrupción) listview exterior s método de desplazamiento mediante el uso de esta :)

Suponga que tiene LV vista de lista en el interior horizontal Listview HV entonces usted tiene que escribir siguiente en el método de contacto de la lista de vista-

lv.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View arg0, MotionEvent arg1) { 

       if(arg1.getAction() == MotionEvent.ACTION_DOWN || arg1.getAction() == MotionEvent.ACTION_MOVE) 
       { 
       HV.requestDisallowInterceptTouchEvent(true); 

       } 
       return false; 
      } 
     }); 
Cuestiones relacionadas