2012-05-10 7 views
5

Ich möchte eine Seite erstellen, die 3 Listen und 3 Header hat, aber ich möchte nicht unabhängig voneinander scrollen, möchte ich die ganze Seite scrollen. Weiß jemand, wie ich das erreichen könnte?Android mehrere Listenansichten, die nicht unabhängig scrollen

Grunde möchte ich es wie folgt aussehen:

header 
smlheader 
list 
smlheader 
list 
smlheader 
list 

Mit diesem Code habe ich versucht, es zu erreichen, aber es ist nicht so gut.

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 

<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/white"> 

    <include layout="@layout/header" /> 
    <include layout="@layout/redcell" /> 

    <TableRow 

     android:id="@+id/tableRow1" 
     android:layout_width="wrap_content" 
     android:layout_height="60dp" > 


     <TextView 

     android:id="@+id/fixtures_text" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 

     android:gravity="center" 
     android:text="@string/leagues" 
     android:textColor="@color/white" 
     android:textSize="25dp" 
     android:textStyle="bold"/> 




    </TableRow> 

    <include layout="@layout/redcell" /> 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_width="wrap_content" 
     android:layout_height="60dp" > 


     <TextView 

     android:id="@+id/results_text" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 

     android:gravity="center" 
     android:text="@string/leagues" 
     android:textColor="@color/white" 
     android:textSize="25dp" 
     android:textStyle="bold"/> 

    </TableRow> 

    <include layout="@layout/redcell" /> 


    <ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

</TableLayout> 
<ScrollView/> 
+2

Werfen Sie einen Blick auf diese Antwort: http: // stackoverflow.com/a/1967010/1321873 – Rajesh

+1

Ich bin unklar, was Sie wollen ... wollen Sie drei Listen nebeneinander, die zusammen scrollen, oder drei Listen, die ar sind vertikal ausgerichtet, aber als eine Liste scrollen? – Barak

+0

Was hast du probiert? Ohne den Code zu sehen, den Sie verwendet haben, können wir Ihnen nicht helfen. – slayton

Antwort

13

Ich würde versuchen, CommonsWare MergeAdapter wie von Rajesh hingewiesen. Es klingt genau wie du es brauchst.

Es wird mehrere Ansichten (einschließlich Listenansichten) und fügen Sie sie zusammen, dann legen Sie den Merge-Adapter auf eine Listenansicht und presto, haben Sie mehrere Listenansichten in einem.

aus der Dokumentation für sie Zitiert:

MergeAdapter eine Mischung aus Adapter und Ansichten akzeptiert und stellt sie als einen zusammenhängenden Ganzen zu, was auch immer es in Listview gegossen wird. Dies ist nützlich für Fälle, in denen Sie mehrere Datenquellen haben oder wenn Sie eine Handvoll gewöhnlicher Ansichten haben, um Datenlisten oder Ähnliches zu verwenden.

Erstellen Sie einfach einen MergeAdapter und rufen Sie addAdapter(), addView() oder addViews() auf (letzterer akzeptiert eine Liste), und fügen Sie dann Ihren Adapter an die ListView an.

EDIT

1) Laden Sie die .jar von here
2) für CWAC SackOfViewsAdapter die .jar Download als die MergeAdapter es erfordert.
2) Erstellen Sie ein Verzeichnis in einem Projekt namens „Libs“ (auf dem gleichen Niveau wie src & res)
3) legen beide der .jar-Dateien in diesem Ordner (Eclipse-automatisch Dinge nehmen von dort bis zum Einstellen es in der Build enthalten sein)
4) Verwenden Sie den MergeAdapter gemäß den Anweisungen aus dem ersten Link in meiner ursprünglichen Antwort.

Pseudo-Code-Beispiel:

myMergeAdapter = new MergeAdapter(); 
myMergeAdapter.addView(HeaderView); 
myMergeAdapter.addView(SmallHeaderView1); 
myMergeAdapter.addAdapter(listAdapter1); 
myMergeAdapter.addView(SmallHeaderView2); 
myMergeAdapter.addAdapter(listAdapter2); 
myMergeAdapter.addView(SmallHeaderView3); 
myMergeAdapter.addAdapter(listAdapter3); 

setListAdapter(myMergeAdapter); 

EDIT 2

Ihre Kopf Hinzufügen, die ein komplettes Layout ist:

View Header = getLayoutInflater.inflate(R.layout.red_cell); 
myMergeAdapter.addView(Header); 
+0

yeah dieser Sound ist etwa richtig, aber wie kann ich dies in meine implementieren Code? – iamlukeyb

+0

vielen Dank auch – iamlukeyb

+0

muss ich auch die Layout-Datei ändern.Ich habe eine Layout-out-Datei namens rote Zelle, die nur eine rote Leiste mit einer Textansicht ist das ist was ich als XML-Header verwenden möchte, wie ich das aus meinem Layout-Ordner mit einem mergeAdapter – iamlukeyb

Verwandte Themen