1. MBPower, 22.07.2010 #1
    MBPower

    MBPower Threadstarter Erfahrener Benutzer

    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: 22.07.2010
  2. MBPower, 24.07.2010 #2
    MBPower

    MBPower Threadstarter Erfahrener Benutzer

    Kann mir jemand bei dem Problem helfen, oder hat einen guten Link für mich?
     
  3. swordi, 24.07.2010 #3
    swordi

    swordi Gewerbliches Mitglied

    naja genau gleich wie bei der ersten textview

    holder.text2 = (TextView) convertView.findViewById(R.id.text2);
     
    MBPower bedankt sich.
  4. MBPower, 24.07.2010 #4
    MBPower

    MBPower Threadstarter Erfahrener Benutzer

    Danke Dir und ein schönes Wochenende noch. :)
     
  5. Har-ry, 20.07.2011 #5
    Har-ry

    Har-ry Neuer Benutzer

    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
     
  6. Hagebutt, 31.10.2011 #6
    Hagebutt

    Hagebutt Neuer Benutzer

    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!
     
  7. Har-ry, 01.11.2011 #7
    Har-ry

    Har-ry Neuer Benutzer

    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
     
    Hagebutt bedankt sich.

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android zweispaltigen liearlayout

    ,
  2. android studio zwei spalten view

    ,
  3. android listview

    ,
  4. android studio spalten layout,
  5. daten text in spalten in android app,
  6. mail app zwei spalten android,
  7. android view spalten