1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

ListView mit zwei Spalten

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von MBPower, 22.07.2010.

  1. MBPower, 22.07.2010 #1
    MBPower

    MBPower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    149
    Erhaltene Danke:
    9
    Registriert seit:
    26.02.2010
    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 Android-Hilfe.de Mitglied

    Beiträge:
    149
    Erhaltene Danke:
    9
    Registriert seit:
    26.02.2010
    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

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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 Android-Hilfe.de Mitglied

    Beiträge:
    149
    Erhaltene Danke:
    9
    Registriert seit:
    26.02.2010
    Danke Dir und ein schönes Wochenende noch. :)
     
  5. Har-ry, 20.07.2011 #5
    Har-ry

    Har-ry Neuer Benutzer

    Beiträge:
    19
    Erhaltene Danke:
    7
    Registriert seit:
    19.05.2011
    Phone:
    Nexus S
    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

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    28.04.2011
    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

    Beiträge:
    19
    Erhaltene Danke:
    7
    Registriert seit:
    19.05.2011
    Phone:
    Nexus S
    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.

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android studio spalten layout