ListView und SQL , komme nicht weiter

E

euphrisch

Neues Mitglied
0
Hii,

nun habe ich es nah 2 Tage harte Arbeit endlich geschafft, das aus meiner SQLite Datenbank etwas in einer ListView ausgelesen wird und nun sitze ich schon wieder den halben Tag, ja ganze Nacht durchgemacht daran und ich möchte, 2 Datensätze in die ListView eintragen, also auslesen. Habe mittlerweile keine Idee mehr wie ich dies bewerkstelligen könnte. Aus diesem Grund habe ich mich hier nun neu registriert und hoffe auf eure Hilfe.

list_item.xml

Code:
<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        <TextView
                        android:id="@+id/testname1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="12dip" />
           <TextView
            android:id="@+id/testname2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="10dip" />
    </LinearLayout>
.java

Code:
myDB = this.openOrCreateDatabase(the_sql_dbn, MODE_PRIVATE, null);
            Cursor c = myDB.rawQuery("SELECT _id,name1,name2 FROM "+the_sql_dbb_tabelle + ";", null);
        
            startManagingCursor(c);    
            getListView().setOnCreateContextMenuListener(this);
            final SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.list_item, c,new String[] { "_id"},new int[] { R.id.testname1});
                                 
            adapter.setViewBinder(new ViewBinder() {               
                @Override
            public boolean setViewValue(View view, Cursor theCursor, int column) 
            {
                final String ColNameModel = theCursor.getString(0); 
                ((TextView)view).setText(ColNameModel);
                return true;
            }
            });
            this.setListAdapter(adapter);
So im Grunde möchte ich also nur, dass name2 in die TextView testname2 auch noch eingetragen wird. Wie das allerdings funktioniert, verstehe ich momentan nicht.

Hat jemand eine Idee?

Wenn noch Informationen benötigt werden, immer raus damit :>

Lieben gruß von euphrisch :>
 
Einfach mit "theCursor.getString(1)"

Also etwas:

testname1.setText(theCursor.getString(0));
testname2.setText(theCursor.getString(1));

Gruß Maddi
 
Hi,

ja, einfach ist gut.So einfach finde ich es nicht. Aber danke du hast mich auf eine Idee gebracht. Habe es nun so probiert, aber das klappt auch nicht

Code:
    final SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.list_item, c,new String[] { "_id","name1"},new int[] { R.id.testname1, R.id.testname2});                   adapter.setViewBinder(new ViewBinder() {               
                @Override
            public boolean setViewValue(View view, Cursor theCursor, int column) {
              final String ColNameModel = theCursor.getString(0);
              final String ColNameModel_2 = theCursor.getString(1);
            ((TextView)view).setText(ColNameModel);
            ((TextView)view).setText(ColNameModel_2);
               
                return true;
            }
            });
Nun wird nur der zweite Wert also ColNameModel_2 = theCursor.getString(1); in beide TextViews R.id.testname1, R.id.testname2 eingetragen.

Ich könnte natürlich jetzt einfach den alten Code mehrmals kopieren und dann statt adapter ... adapter1 adapter2 etc verwenden aber das wäre etwas umständlich.

Wie kann man nun den Code so abändern, dass ColNameModel = theCursor.getString(0); auch in die TextView R.id.testname1 eingetragen wird?

Ne Idee? :)

Liebe Grüße
 
Zuletzt bearbeitet:
Für alle die es noch intressiert habe es nun so gelöst:

Code:
adapter.setViewBinder(new ViewBinder() {               
                @Override
                public boolean setViewValue(View view, Cursor theCursor, int column) {
                    switch(view.getId()) {
                    case R.id.testname1:
              final String ColNameModel = theCursor.getString(0);
              ((TextView)view).setText(ColNameModel);
              return true;
                   case R.id.testname2:
                       final String ColNameModel_2 = theCursor.getString(1);
                    ((TextView)view).setText(ColNameModel_2);
                    }
                return true;
            }
            });
 
Hm... so würde ich es machen
myDB = this.openOrCreateDatabase(the_sql_dbn, MODE_PRIVATE, null);
Cursor c = myDB.rawQuery("SELECT name1,name2 FROM "+the_sql_dbb_tabelle + ";", null);

startManagingCursor(c);
String[] columns = new String[] {"name1", "name2" };
int[] to = new int[] { R.id.testname1, R.id.testname2};
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, R.layout.list_example_entry, c, columns, to);
this.setListAdapter(mAdapter);
 
  • Danke
Reaktionen: euphrisch
Super, der Code ist viel kompakter, weiß auch nicht warum ich es so kompliziert geschrieben habe. Ich danke dir :)
 

Ähnliche Themen

M
  • mafoma63
Antworten
2
Aufrufe
757
swa00
swa00
B
Antworten
3
Aufrufe
1.299
swa00
swa00
A
Antworten
10
Aufrufe
1.016
swa00
swa00
Zurück
Oben Unten