Android アプリ用に作成した SQLite データベースにクエリを実行して、値のリストを作成しようとしています。ユーザーがボタン (DROP) をクリックすると、アクティビティは ListViewDelete に変わり、ID に基づく Select クエリからのすべての行のリストが必要になります。私はそれをどのように進めるかについて無知です。チュートリアルから何かを試しましたが、アプリが失敗しました。これが私のコードです:
--MySQLitehelper.java----
public class MySQLitehelper {
//public static final String TABLE_COMMENTS = "comments";
public static final String COLUMN_ID = "GWid";
public static final String COLUMN_DATE = "DateGWU";
public static final String COLUMN_LOCATION = "location";
public static final String COLUMN_TIME = "time";
public static final String TABLE_NAME = "UPDTable";
private static final String DATABASE_NAME = "UPDdb_version6";
private static final int DATABASE_VERSION = 6;
private final Context context;
GetSet getset = new GetSet();
public void GetIdForGwid(GetSet get)
{
getset=get;
}
// Database creation sql statement
private static final String DATABASE_CREATE = "CREATE TABLE " + TABLE_NAME +
" (" +COLUMN_ID+ " integer," + COLUMN_DATE + " VARCHAR," +
COLUMN_LOCATION+" VARCHAR," +COLUMN_TIME +" VARCHAR);";
// private static final String DATABASE_INSERT = "INSERT INTO " +TABLE_NAME +
// " Values (47688507,'DEC-07-2012','MARVIN 203','20:00');";
private static final String DATABASE_INSERT = "INSERT INTO " +TABLE_NAME + " (" +COLUMN_ID+ " ," + COLUMN_DATE + "," +
COLUMN_LOCATION+" ," +COLUMN_TIME +" )" +
" Values (47688507,'DEC-07-2012','MARVIN 203','20:00');";
DatabaseHelper dbhelper;
SQLiteDatabase db;
public MySQLitehelper(Context ctx)
{
this.context = ctx;
dbhelper = new DatabaseHelper(ctx);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context)
{
super(context,DATABASE_NAME, null,DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(DATABASE_CREATE); //execute create table
db.execSQL(DATABASE_INSERT); //execute insert query
db.execSQL("INSERT INTO " +TABLE_NAME + " (" +COLUMN_ID+ " ," + COLUMN_DATE + "," +COLUMN_LOCATION+" ," +COLUMN_TIME +" )" +" Values (47688507,'DEC-22-2012','OLD MAIN','23:00');");
db.execSQL("INSERT INTO " +TABLE_NAME + " (" +COLUMN_ID+ " ," + COLUMN_DATE + "," +COLUMN_LOCATION+" ," +COLUMN_TIME +" )" +" Values (1234567,'DEC-14-2012','FUNGER','12:00');");
db.execSQL("INSERT INTO " +TABLE_NAME + " (" +COLUMN_ID+ " ," + COLUMN_DATE + "," +COLUMN_LOCATION+" ," +COLUMN_TIME +" )" +" Values (7654321,'DEC-29-2012','GELMAN','22:00');");
db.execSQL("INSERT INTO " +TABLE_NAME + " (" +COLUMN_ID+ " ," + COLUMN_DATE + "," +COLUMN_LOCATION+" ," +COLUMN_TIME +" )" +" Values (47688507,'DEC-12-2012','IVORY','23:00');");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.w(MySQLitehelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
// open the DB
public MySQLitehelper open() throws SQLException
{
System.out.println("Inside open function");
db = dbhelper.getWritableDatabase();
return this;
}
public void close()
{
dbhelper.close();
}
public void insertRecord(long gwid, String date, String location, String time)
{
ContentValues initialValues = new ContentValues();
initialValues.put(COLUMN_ID, gwid);
initialValues.put(COLUMN_DATE, date);
initialValues.put(COLUMN_LOCATION, location);
initialValues.put(COLUMN_TIME, time);
db.insert(TABLE_NAME, null, initialValues);
}
public Cursor getAllrows() //function to get all rows in the DB. Testing initially.
{
Cursor cur = db.rawQuery("SELECT * FROM "+TABLE_NAME, null);
return cur;
}
public Cursor getRecord(long getid) throws SQLException
{
Cursor mCursor =
db.query(true, TABLE_NAME, new String[] {COLUMN_ID,
COLUMN_DATE, COLUMN_LOCATION, COLUMN_TIME},
COLUMN_ID + "= "+getid, null, null, null, null, null); //HARDCODED. Please make it dynamic
if (mCursor != null)
{
mCursor.moveToFirst();
}
return mCursor;
}
}
--SelectOptions.java-- ここでユーザーが DROP ボタン (btnDrop) をクリックすると、コントロールはさらに下にあるアクティビティ ListViewDelete.java に移動します。
public class SelectOptions extends Activity {
protected static final String EXTRA_MESSAGE = "This is a the GWID";
Button btnView, btnDrop, btnLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_options);
final Intent intent = getIntent();
//String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
//long getid = intent.getLongExtra(MainActivity.EXTRA_MESSAGE, defaultValue)
final Bundle extras = getIntent().getExtras();
if (extras != null) {
long getid = extras.getLong(MainActivity.EXTRA_MESSAGE,0);
}
btnView = (Button)findViewById(R.id.btnViewShift);
btnDrop = (Button)findViewById(R.id.btnDropShift);
btnLocation = (Button)findViewById(R.id.btnViewLocation);
final GetSet gwid = new GetSet();
/* ArrayList<String> results = new ArrayList<String>();
SQLiteDatabase sampleDB = null;
final MySQLitehelper db = null;
final Dialog diag = null;
final TextView txt = null; */
final MySQLitehelper helper = new MySQLitehelper(this);
btnView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
helper.open();
Cursor c = helper.getRecord(extras.getLong(MainActivity.EXTRA_MESSAGE));
// List<String> list = new ArrayList<String>();
// Cursor cursor = helper.query(constantValues.TABLE_NAME, new String[] { "emailid"},null, null, null, null, null); // here emailid is the field name in the table and contantValues.TABLE_NAME is the table name
if (c.moveToFirst()) {
do {
System.out.println("In Do while");
DisplayRecord(c);
} while (c.moveToNext());
}
helper.close();
System.out.println("Out of Do");
}
});
btnLocation.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent2 = new Intent(SelectOptions.this, MapViewActivity.class);
//startActivity(intent2);
startActivity(intent2);
}
});
btnDrop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent3 = new Intent(SelectOptions.this, ListViewDelete.class);
//startActivity(intent2);
intent3.putExtra(EXTRA_MESSAGE, extras.getLong(MainActivity.EXTRA_MESSAGE));
startActivity(intent3);
}
});
}
public void DisplayRecord(Cursor c)
{
System.out.println("In side toast display function");
Toast.makeText(this, "id: "+c.getString(0)+"\n"+
"Date: "+c.getString(1)+"\n"+
"Location: "+c.getString(2)+"\n"+
"Time: "+c.getString(3), Toast.LENGTH_LONG).show();
}
}
--ListViewDelete.java
public class ListViewDelete extends ListActivity {
String []list = {"A","B","C","D"}; //#I just tried to populate a sample list#
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_list_view_delete);
final Intent intent = getIntent();
final Bundle extras = getIntent().getExtras(); //gets the GWID
final MySQLitehelper dbhelper = new MySQLitehelper(this);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,list));
Cursor c = dbhelper.getRecord(extras.getLong(MainActivity.EXTRA_MESSAGE));
if (c.moveToFirst())
{
do {
System.out.println("In Do while");
// DisplayRecord(c);
//list[]
} while (c.moveToNext());
}
dbhelper.close();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_list_view_delete, menu);
return true;
}
}
上記のクラスは再構築する必要があり、順調に進んでいないようです。どんな助けでも大歓迎です。ありがとう