2016-03-28 10 views
0

Hallo Ich habe diesen Code, der Daten aus der SQLite lokalen Datenbank abruft, die ich erstellt habe.Angezeigt alle abgerufene Daten SQLite

den Code unten ist eine öffentliche Cursor, der die Daten alle i aus der Datenbank ein

Context Contx = this; 
public DatabasOpperations DB = new DatabasOpperations(Contx); 
public Cursor Cur; 
Cur = DB.RetriveAdvertData(DB, DBUsername, "Restaurant"); 

String AdName = ""; 
String AdEmail = ""; 
String AdAddress = ""; 
String AdNumber = ""; 
String AdType = ""; 

if (Cur.moveToFirst()){ 
      do { 
       AdName = Cur.getString(Cur.getColumnIndex("AdvertsName")); 
       AdEmail = Cur.getString(Cur.getColumnIndex("AdvertEmail")); 
       AdAddress = Cur.getString(Cur.getColumnIndex("AdvertAddress")); 
       AdNumber = Cur.getString(Cur.getColumnIndex("AdvertNumber")); 
       AdType = Cur.getString(Cur.getColumnIndex("AdvertType")); 

       final String[] Adverts = new String[]{ 
         AdName, AdEmail, AdAddress, AdNumber, AdType 
       }; 

       ArrayAdapter setListAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, Adverts); 
       LV1.setAdapter(setListAdapter); 
      }while (Cur.moveToNext()); 
     } 
     Cur.close(); 

der Code tut Anzeige nur

public Cursor RetriveAdvertData (DatabasOpperations DBOpp, String Username, String AdvertType){ 
    SQLiteDatabase SQDB = DBOpp.getReadableDatabase(); 
    String[] Coloumns = {TableData.TableInfo.USERNAME, TableData.TableInfo.ADVERT_NAME, TableData.TableInfo.ADVERT_EMAIL, TableData.TableInfo.ADVERT_ADDRESS, TableData.TableInfo.ADVERT_NUMBER, TableData.TableInfo.ADVERT_TYPE}; 
    String Where = TableData.TableInfo.USERNAME + " LIKE ? AND " + TableData.TableInfo.ADVERT_TYPE + " LIKE ?"; 
    String Argument[] = {Username, AdvertType}; 
    Cursor Cur = SQDB.query(TableData.TableInfo.TABLE_NAME2, Coloumns, Where, Argument, null, null, null); 
    return Cur; 
} 

ich dann so nennen Cursor in einer anderen Java-Seite benötigen abruft Zeile aus der Datenbank, wie ändere ich den Code, um alle Zeilen in der Datenbank anzuzeigen?

+0

Wenn nur eine Zeile angezeigt, weil Sie den Adapter in jeder Schleife zurückgesetzt wird. –

+0

Was schlagen Sie vor, um das zu beheben? – RexDough

+0

loswerden der tun? und setze eine Weile in – RexDough

Antwort

0

Versuchen Sie, die setAdapter aus der while-Schleife zu setzen:

List<String[]> arr = new ArrayList<>(); 

    if (Cur.moveToFirst()) { 
     do { 
      AdName = Cur.getString(Cur.getColumnIndex("AdvertsName")); 
      AdEmail = Cur.getString(Cur.getColumnIndex("AdvertEmail")); 
      AdAddress = Cur.getString(Cur.getColumnIndex("AdvertAddress")); 
      AdNumber = Cur.getString(Cur.getColumnIndex("AdvertNumber")); 
      AdType = Cur.getString(Cur.getColumnIndex("AdvertType")); 

      final String[] Adverts = new String[]{ 
        AdName, AdEmail, AdAddress, AdNumber, AdType 
      }; 

      arr.add(Adverts) 
     } while (Cur.moveToNext()); 
    } 
    Cur.close(); 

    ArrayAdapter setListAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arr); 
    LV1.setAdapter(setListAdapter); 
+0

erscheint, wenn ich die Listenansicht anzeigen, zeigt es nichts anderes als [Ljava.lang.String'@32c6d061, irgendein Hinweis Warum? – RexDough

+0

@RexDough Becuase 'android.R.layout.simple_list_item_1' ruft nur' toString' auf seinen Elementen auf. Sie können [diesen Beitrag] (http://stackoverflow.com/questions/29140402/how-doi-i-print-my-java-object-without-getom- type2f92e0f4) als Referenz sehen. –

+0

oh ok, so druckt es den interger Wert dieser Zeichenfolge, wie ändere ich es, um die Daten statt @ingerger Wert der Zeichenfolge anzuzeigen? – RexDough