2016-06-10 4 views
0

ListView kann nicht von SQLite aus angezeigt werden.
Wie löse ich dieses Problem?ListView kann nicht von SQLite aus angezeigt werden

public class MainActivitySleman extends AppCompatActivity { 
TukangDB dbcenter; 
protected Cursor cursor; 
String [] daftar; 
ListView list; 
public static MainActivitySleman sleman; 
private String cariTukang; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main_activity_sleman); 

    dbcenter = new TukangDB(this); 
    sleman = this; 
    RefreshList(); 
} 

public void RefreshList(){ 
    SQLiteDatabase db = dbcenter.getReadableDatabase(); 
    cursor = db.rawQuery("select no from tucall", null); 
    daftar = new String[cursor.getCount()]; 
    cursor.moveToFirst(); 
    for (int i = 0; i < cursor.getCount() ; i++) { 
     cursor.moveToPosition(i); 
     daftar[i] = cursor.getString(0).toString(); 
    } 
    list = (ListView) findViewById(R.id.listViewSleman); 
    list.setAdapter(new ArrayAdapter(this,  android.R.layout.simple_list_item_1, daftar)); 
    list.setSelected(true); 
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      final String selection = daftar[position]; 
      Intent i = new Intent(getApplicationContext(), Detail.class); 
      i.putExtra("no", selection); 
      startActivity(i); 
     } 
    }) ; 
    ((ArrayAdapter) list.getAdapter()).notifyDataSetChanged(); 
} 
} 

Dies ist der Code in meiner MainACtivity.
Und das ist das Ergebnis von diesem Code in meinem Smartphone:

Screenshot from my smartphone

Ich kann nicht die Daten von SQLite anzuzeigen.
Ich habe die Daten bereits mit SQL-Befehlen gespeichert.

Was soll ich tun?

+0

Beitrag der Code der TukangDB Klasse bitte – earthw0rmjim

+0

Log den Inhalt cursor.getString (0) .toString() und überprüfen, ob Daten vorhanden sind oder nicht –

Antwort

-1

Können Sie Ihre ArrayAdapter-Klasse veröffentlichen? Ist Ihr Daftar-Objekt leer oder nicht? Ich empfehle Ihnen, stattdessen ArrayList String [] zu verwenden.

+0

Wie überprüfe ich meine ArrayAdapter-Klasse, weil ich nicht überprüfen kann, ob mein Daftar-Objekt leer ist oder nicht. Warum ArrayList verwenden? verwendet ArrayAdapter oder Cursor kann nicht implementiert werden? –

+0

Sie können Ihr Daftar-Objekt überprüfen, wenn Sie Debug verwenden oder ein Protokoll hinzufügen. Du kannst den Cursor implementieren, ich schlage dir ArrayList vor, weil anders als String [] änderbar ist. Aber Sie können verwenden, was Sie wollen. Wo steckst du ein paar Daten in deine TukangDB? – rik194

+0

Ich kann die Daten nicht sehen, die ich bereits verwende, wie sql Entwickler, also kann ich die Daten überprüfen. aber im activity register zeigen succes save data an. –

0

Da Sie TukangDB kurz vor dem Aufruf RefreshList() instanziieren, die einzige Möglichkeit, die Sie Daten darin haben könnten, wenn Sie es in seinem Konstruktor auffüllen.

Ich nehme an, Sie haben das nicht getan, also ist Ihre Datenbank leer, wenn Sie versuchen, Daten von ihm abzurufen.

Buchung der Code TukangDB Klasse würde uns sehen, was das Problem ist sicher.

0

das ist mein TukangDB Klasse

public class TukangDB extends SQLiteOpenHelper { 
public static final int DATABASE_VERSION = 1; 
public static final String DATABASE_NAME = "tucall.db"; 

public TukangDB(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    String sql = "create table tucall(no integer primary key, nama text null, alamat text null, no_hp text null, keahlian text null, tarif integer, wilayah text null)"; 
    Log.d("Data", "onCreate: "+sql); 
    db.execSQL(sql); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

} 

}

Verwandte Themen