私はいつもこのような問題を抱えています。私はDBのデータをアクティビティに表示できません!私のクラスBDHelper:SQLite - アンドロイド - 既存のDBからデータを表示
は、私はこのような何かしようとし始めるには
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;
}
そして私はメインの活動でそれを表示しようとしているが、それが理由です、私それ:
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);
}
}
私はいつも同じ結果を得る:空のアクティビティ。私は他の方法で試してみましたが、同様の問題を抱えた他の質問を見て、私はここでそれを逃したところに行きたいと思っています!
'arrayAdapter'は空です...なぜデータがそこにあると思われますか? –
おそらく 'mydb'のメソッドを呼び出してデータを取得できますか? –
** ArrayList array_list = mydb.getAllCotacts(); \t ArrayAdapter arrayAdapter =新しいArrayAdapter(これ、android.R.layout.simple_list_item_1、array_list); ** は、私はこれを使用しますが、それは言う:警告を、そしてそれはあなたがしなかったので、それは警告を持ってsuppressWaarning –