ListView und SQL , komme nicht weiter

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von euphrisch, 03.12.2011.

  1. euphrisch, 03.12.2011 #1
    euphrisch

    euphrisch Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    03.12.2011
    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 :>
     
  2. Maddi, 05.12.2011 #2
    Maddi

    Maddi Android-Hilfe.de Mitglied

    Beiträge:
    82
    Erhaltene Danke:
    10
    Registriert seit:
    18.07.2010
    Einfach mit "theCursor.getString(1)"

    Also etwas:

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

    Gruß Maddi
     
  3. euphrisch, 05.12.2011 #3
    euphrisch

    euphrisch Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    03.12.2011
    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: 05.12.2011
  4. euphrisch, 05.12.2011 #4
    euphrisch

    euphrisch Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    03.12.2011
    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;
                }
                });
     
  5. Maddi, 05.12.2011 #5
    Maddi

    Maddi Android-Hilfe.de Mitglied

    Beiträge:
    82
    Erhaltene Danke:
    10
    Registriert seit:
    18.07.2010
    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);
     
    euphrisch bedankt sich.
  6. euphrisch, 05.12.2011 #6
    euphrisch

    euphrisch Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    03.12.2011
    Super, der Code ist viel kompakter, weiß auch nicht warum ich es so kompliziert geschrieben habe. Ich danke dir :)
     

Diese Seite empfehlen