Horizontaler ListView

D

druber

Neues Mitglied
0
Hallo!

Ich möchte einen horizontalen Listview implementieren. Jede Zelle sollte ein Image beheinhalten und man sollte aben nur eine zeile sehen und von links nach rechts navigieren können. Zusätzlich möchte ich die Daten natürlich über einen Adapter binden.

Wie mache ich das? Muss ich mir dazu einen eigenen AdapterView schreiben?
 
Ich glaube nicht, dass die ListView für vertikale (du meinst doch bestimmt vertikal, oder?) Listen ausgelegt ist. Besser für dich wäre sowas wie eine Form von ImageView / ScrollView bzw einen ImageSwitcher. Die sind dazu gedacht sowas ähnliches zu veranstalten
 
horizontalscrollview meinst du eher denke ich

gibts aber eher nicht mit adapter
 
Was hast du denn vor?
 
Nein ich meine schon horizontal.

Im Prinzip sollte es so wie die erste Zeile aussehen (die zweite ist einfach eine Gallery). Images hintereinander und man kann von links nach rechts scrollen:

wifiscanerror1.png


Das XML für die erste Zeile sieht so aus:

Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <ScrollView 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:scrollbars="horizontal|vertical">
        <HorizontalScrollView 
            android:layout_height="fill_parent"
            android:layout_width="wrap_content">
            <LinearLayout 
                android:id="@+id/list"
                android:layout_width="wrap_content"
                android:orientation="horizontal"
                android:layout_height="fill_parent">
                <ImageView
                    android:id="@+id/image_scroll"
                    android:layout_width="70dip"
                    android:layout_height="70dip" 
                    android:src="@drawable/stub" 
                    android:scaleType="centerCrop" />
                <ImageView
                    android:id="@+id/image_scroll"
                    android:layout_width="70dip"
                    android:layout_height="70dip" 
                    android:src="@drawable/stub" 
                    android:scaleType="centerCrop" />
                <ImageView
                    android:id="@+id/image_scroll"
                    android:layout_width="70dip"
                    android:layout_height="70dip" 
                    android:src="@drawable/stub" 
                    android:scaleType="centerCrop" />
                <ImageView
                    android:id="@+id/image_scroll"
                    android:layout_width="70dip"
                    android:layout_height="70dip" 
                    android:src="@drawable/stub" 
                    android:scaleType="centerCrop" />
                <ImageView
                    android:id="@+id/image_scroll"
                    android:layout_width="70dip"
                    android:layout_height="70dip" 
                    android:src="@drawable/stub" 
                    android:scaleType="centerCrop" />
                <ImageView
                    android:id="@+id/image_scroll"
                    android:layout_width="70dip"
                    android:layout_height="70dip" 
                    android:src="@drawable/stub" 
                    android:scaleType="centerCrop" />
            </LinearLayout>
        </HorizontalScrollView>
    </ScrollView>
</LinearLayout>

Jetzt will ich aber nicht, dass die ImageViews in dem XML fix codiert sind, sondern dass die über einen Adapter reinlaufen - ähnlich wie bei einem ListView.

Also ich will dem Adapter eine Liste von Image-URLs übergeben und der soll mir dann den View richtig setzen.

Also da muss ich mir jetzt selbst einen AdapterView schreiben?
 
Warum nimmst du nicht die Gallery?

Du willst also die Images im Code dynamisch laden? Falls ja würde ich die ScrollView und LinearLayout im XML definieren und die Bilder im Code dazuadden.
Code:
LinearLayout ll = findViewById(R.id.list);
ImageView iv1 = new ImageView...
...
ll.add(iv1);
...

Eine ListView ist eher dafür gedacht mit den Daten in der View noch etwas anzufangen.
 
Warum ich nicht die Gallery nehme? Weil da immer ein Image zentriert in der Mitte liegt (oder halt links oder recht - je nach der Einstellung). Man soll aber nur durchscrollen können....

OK, ein Adapter wäre zwar sauberer glaube ich, aber dann muss ich die Bilder halt dynamisch hinzufügen.
 
Der Adapter transferiert zwischen einer View und den darzustellenden Daten. Du kannst natürlich auch einen Adapter bauen, der deine Daten (also die Pfade zum Bild) in einer ImageView unterbringt. Aber das kann man ja auch direkt tun, wenn zu dem Bild nichts dazukommt.
 
Naja ich will ja das MVC-Prinzip einhalten. Mit den Adaptern ist das ja quasi klar -> Modeller = Adapter, Viewer = Views, Controller = Activities.

Wo soll ich da nun am besten den Code hingeben:

Code:
LinearLayout ll = findViewById(R.id.list);
ImageView iv1 = new ImageView...
...
ll.add(iv1);
...

Gehört ja quasi nicht mehr zum controller, sondern zum modeller?
 
Woher ergeben sich denn deine Bilder? Sind die beim Start der Activity bekannt? Dann bei onCreate()

Ich würde das so sehen:
Model = Deine Bilder
Controller = Deine Activity
View = Das LinearLayout
 
Die Bilder sind in einer ArrayList und werden durch einen XML-Parser gesetzt. Der Parser ist in einer eigenen Klasse, der Aufruf des Parser erfolgt aber in der Activity.
 
In einem eigenen Thread?
 
Nein, sollte man aber vielleicht machen, also das XML parsen in einen eigenen Thread?
 
Da das ein längerer Prozess sein kann sollte man das auslagern. Also ich würde kenntlich machen, dass die Bilder noch geladen werden (ProgressBar, evtl auch in der Zeile, in der das AppLabel steht) und dann den Thread starten. Wenn das parsen beendet ist rufst du aus dem XMLParse-Thread einen Handler auf, den du in der Activity erzeugt hast und übergibst ihm die anzuzeigenden Bilder. Der erzeugt sie dann und hängt sie in die ScrollView.
 

Ähnliche Themen

A
Antworten
10
Aufrufe
1.021
swa00
swa00
D
Antworten
9
Aufrufe
1.765
jogimuc
J
J
  • JoEntwickler
Antworten
0
Aufrufe
974
JoEntwickler
J
Zurück
Oben Unten