2012-07-30 4 views
5

Ich muss eine horizontale Listenansicht innerhalb einer vertikalen Listenansicht erstellen. Beide Listenansichten können beliebig viele Elemente enthalten und beide müssen scrollbar sein.ListView in einem anderen ListView

Wie erreiche ich dies, weil ich gelesen habe, dass Android keine Listenansichtshierarchie unterstützt.

Danke!

CUSTOM UI

+0

folgenden im Touch-Methode der Liste schreiben Scrollviews können nicht geschachtelt werden. [Siehe mehr hier] [1]. [1]: http://stackoverflow.com/questions/4490821/scrollview-inside-scrollview – Snicolas

Antwort

3

diesen dieses Ziel zu erreichen, haben Sie den folgenden ::

  1. erstellen vertikalen Scroll mit Einzellinearlayout zu tun.
  2. Jetzt Horizontal Listviews innerhalb dieser Linearlayout erstellen, wie im Beispiel unten gezeigt:

Daher wird diese können Sie blättern vertikal im Bildschirm sowie horizontal in jedem Listview.

für zB.

<ScrollView> 

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

Edit: Hinzufügen dynamisch Listview zu dem 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 nicht verschachtelt sein können ... aber aber aber ... Sie können einen einzelnen Elternteil Linearlayout nehmen und darin können Sie mehrere ListViews behalten. Daher wird die ScrollView ein einzelnes Kind Linearlayout haben. –

+0

Aber in diesem Fall kenne ich nicht die Anzahl der listViews, die ich machen muss, da sie zufällig sind. Wie werde ich das erreichen? – gauravsapiens

+0

Bitte überprüfen Sie meine Edit –

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

Es ist nicht möglich, aber man kann einen Trick, die ich verwendet habe und arbeitete auch für mich. Sie stoppen können (Interrupt) äußere Listenansicht s Scroll-Methode durch diese Verwendung :)

Angenommen, Sie Listenansicht LV innen Horizontal Listview HV haben, dann müssen Sie view-

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