Ich habe immer dieses Problem, ich kann DB Daten in meiner Aktivität nicht anzeigen! meine Klasse BDHelper:SQLite - Android - Anzeige von Daten aus bestehenden DB
Um i, so etwas zu tun zu beginnen versucht
import java.util.ArrayList;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DataBaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "lm";
public static final String EMP_TABLE = "contacts";
public static final String _id = "id";
public static final String E_NAME = "name";
public static final String E_AGE = "age";
public static final String E_DEPT = "dept";
public DataBaseHelper(Context context)
{
super(context, DATABASE_NAME , null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(
"create table contacts " +
"(id integer primary key, name text,phone text,email text, street text,place text)"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS contacts");
onCreate(db);
}
public boolean insertContact (String name, String age, String dept)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("name", name);
contentValues.put("age", age);
contentValues.put("dept", dept);
db.insert("contacts", null, contentValues);
return true;
}
public Cursor getData(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("select * from contacts where id="+id+"", null);
return res;
}
public int numberOfRows(){
SQLiteDatabase db = this.getReadableDatabase();
int numRows = (int) DatabaseUtils.queryNumEntries(db, EMP_TABLE);
return numRows;
}
public boolean updateContact (Integer id, String name,String age, String dept)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("name", name);
contentValues.put("age", age);
contentValues.put("dept", dept);
db.update("contacts", contentValues, "id = ? ", new String[] { Integer.toString(id) });
return true;
}
/* public Integer deleteContact (Integer id)
{
SQLiteDatabase db = this.getWritableDatabase();
return db.delete("contacts",
"id = ? ",
new String[] { Integer.toString(id) });
}*/
public ArrayList<String> getAllCotacts()
{
ArrayList<String> array_list = new ArrayList<String>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("select * from contacts", null);
res.moveToFirst();
while(res.isAfterLast() == false){
array_list.add(res.getString(res.getColumnIndex(EMP_TABLE)));
res.moveToNext();
}
return array_list;
}
Und ich versuche es in der Hauptaktivität angezeigt werden, das ist, warum ich tat das:
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "MESSAGE";
private ListView obj;
DataBaseHelper mydb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mydb = new DataBaseHelper(this);
ArrayAdapter<?> arrayAdapter = new ArrayAdapter<Object>(this, android.R.layout.simple_list_item_1);
obj = (ListView) findViewById(R.id.listView1);
obj.setAdapter(arrayAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Ich bekomme immer das gleiche Ergebnis: eine leere Aktivität. Ich habe es auf andere Art und Weise versucht und andere Fragen mit ähnlichen Problemen angeschaut. Ich will nur dahin kommen, wo ich es hier verpasst habe!
'ArrayAdapter' ist leer ... Also, warum erwarten Sie, dass Daten da sein? –
Vielleicht könnten Sie eine Methode auf 'mydb' aufrufen, um Daten zu bekommen? –
** ArrayList array_list = mydb.getAllCotacts(); \t ArrayAdapter arrayAdapter = new ArrayAdapter (this, android.R.layout.simple_list_item_1, array_list); ** i verwendet, um dieses, aber es sagt: Warnung, und es muss –