ListView mit zwei Spalten

M

MBPower

Fortgeschrittenes Mitglied
11
Wie kann man ein ListView mit zwei oder mehr Spalten füllen?
In der XML-Datei am Ende habe ich ein zweites TextVew (text2) eingefügt und dieses wird auch angezeigt, aber wie kann ich dieses füllen?

Was sollte man machen, wenn es sich um ein paar tausend Datensätze handelt.
Wenn jemand eine einfach Möglichkeit kennt, aus einer SQLite Datenbank ein ListView zu füllen, dann wäre ich für jeden Tipp sehr dankbar.

In VB.net gibt es ein DataGrid, dass kann man sehr einfach füllen, aber in Java ist das doch schon um einiges komplizierter. :-(

Kann mir bitte jemand helfen.

Code:
private List<Object> listItems = new ArrayList<Object>();
private ListItemsAdapter adapter = null;
String[] lv_arr = new String[array_count];
Code:
private class ListItemsAdapter extends ArrayAdapter<Object> {
        public ListItemsAdapter(List<Object> items) {
            super(Vocab.this, android.R.layout.simple_list_item_1, items);
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;

            LayoutInflater inflater = getLayoutInflater();
            convertView = inflater.inflate(R.layout.list_items, null);

            holder = new ViewHolder();
            holder.text = (TextView) convertView.findViewById(R.id.text1);
            convertView.setTag(holder);

            holder.text.setText(lv_arr[position]);

            return convertView;
        }

        private class ViewHolder {
            TextView text;
        }
}
Code:
for ( int i = 0; i < a; i++ ) {
     Object object = new Object();
     listItems.add(object);
}
ListView list = (ListView) findViewById(R.id.lvwData);
adapter = new ListItemsAdapter(listItems);
list.setAdapter(adapter);
Code:
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/merchants_items_view_merchant_layout"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TextView android:id="@+id/text1"
        android:layout_width="160dip"
        android:layout_height="wrap_content"
        android:text="Test1"
        android:textColor="@color/white"
        android:textSize="14sp"/>
        
    <TextView android:id="@+id/text2"
        android:layout_width="160dip"
        android:layout_height="wrap_content"
        android:text="Test2"
        android:textColor="@color/white"
        android:textSize="14sp"/>

</LinearLayout>
 
Zuletzt bearbeitet:
Kann mir jemand bei dem Problem helfen, oder hat einen guten Link für mich?
 
naja genau gleich wie bei der ersten textview

holder.text2 = (TextView) convertView.findViewById(R.id.text2);
 
  • Danke
Reaktionen: MBPower
Danke Dir und ein schönes Wochenende noch. :)
 
Wenn es noch von Interesse ist:
Für solche Fälle bietet sich die GridView an! Eine Gridview hat in etwas die selben Eigenschaften wie eine ListView, aber bei der GridView kann man die Anzahl der Spalten angeben.

Gefüllt wird die GridView, wie auch die ListView, mit z.B. dem SimpleCursorAdapter bei vielen Daten z.B. aus einer Datenbank.

Gruß Harry
 
hi, :)

magst du mir den Tipp geben wie du den Adapter implementieren würdest? ;-)

Ich habe zwei ArrayLists mit den Daten, leider bekomm ich es nicht ganz gebacken in einer Spalte die Daten "a" anzuzeigen und in der anderen Spalte die Daten "b".

Mein Adapter-Versuch: (bekomme zwar keine Fehlermeldung aber auch nichts angezeigt)

Code:
public void displayInformations(ArrayList<String> content){
        String [] zMatrix = {"_id" ,"bezeichnung", "wert"};
        MatrixCursor cursor = new MatrixCursor(zMatrix);
        int [] layouts = {R.id.GridView1};
        
        for (int i = 0; i < inhaltZuordnung.size(); i++) {
            cursor.addRow(new Object[]{i ,inhaltZuordnung.get(i), content.get(i)});
        }
        gv.setAdapter(new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor, zMatrix, layouts)); 
    }
Meine GridView beim erstellen:

Code:
gv = (GridView)view.findViewById(R.id.GridView1);
            gv.setNumColumns(2);
Mein unveränderter XML Code aus der Layout-File:

Code:
<GridView
        android:id="@+id/GridView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="0.97" >
    </GridView>
Hab ich das mit dem "String[] from" und dem "int [] to" lt. API falsch verstanden?

Setter und Getter für die Columns scheint es ja nicht zu geben. :sad:

BITTE keine Adroid-Developer-Links, denn ich frage hier weil ich mit der Erklärung von dieser Seite nicht ganz klar komme. :unsure:

Danke im voraus!
 
Hey Hagebutt!

Wenn man zwei Quellen hat, ist das nicht ganz so einfach. Wenn es dir irgendwie möglich ist, versuche mal die 2 Arrays zu einem zu kombinieren. Und wenn du die Daten nicht aus einer DB hast sondern einfach in einem Array, dann benutze besser den ArrayAdapter.

Hier empfehle ich dir eine neue Klasse zu schreiben die von ArrayAdapter erbt.
In dieser brauchst du dann die Methode:

Code:
public View getView(int position, View convertView, ViewGroup parent)
Hier inflatest du dein Layout einmal wenn es null ist und benutzt es dann immer wieder.
Habe jetzt den Code auch nicht ganz genau im Kopf. Musste einfach mal nach GridView und ArrayAdapter suchen und wenns da zu wenig gibt, suchste nach ArrayAdapter in Kombination mit einer ListView.
Vielleicht finde ich am Mittwoch bei der Arbeit kurz Zeit und kann es nochmal genauer nach schauen.

Wünsche einen schönen Feiertag,

Gruß Harry
 
  • Danke
Reaktionen: Hagebutt

Ähnliche Themen

A
Antworten
10
Aufrufe
1.021
swa00
swa00
D
Antworten
9
Aufrufe
1.767
jogimuc
J
B
Antworten
4
Aufrufe
495
bb321
B
Zurück
Oben Unten