-2
我使用了一個Array複選框來將數據保存到表中的一個列。我想在微調器中顯示該數組中的每個項目,以便可以進行選擇。將數組從數據庫顯示到微調器中
我想從名爲KEY_FACILITIES_TYPE的列中獲取內容,並將數組中保存的所有項目顯示到微調器中。那麼我可以在數據庫中添加什麼方法?以及如何將其顯示在微調器中?這是我的數據庫文件
package com.example.com.facilitiesreviewapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
// creating the class
public class SQL {
/////////////////////////////////////////////////////////////////////
// Constants & Data
/////////////////////////////////////////////////////////////////////
// For logging:
private static final String TAG = "DBAdapter";
// declaring and initializing data Primary Key Fields for both tables
public static final String KEY_ROWID = "_id";
public static final int COL_ROWID = 0;
public static final String KEY_REVIEWROWID = "_id";
public static final int COL_REVROWID = 0;
//declaring and initializing other database Fields for both tables
public static final String KEY_STATION_NAME = "StationName";
public static final String KEY_STATION_TYPE = "StationType";
public static final String KEY_FACILITIES_TYPE = "Facilities";
public static final String KEY_LOCATION = "Location";
public static final String KEY_EMAIL = "Email";
public static final String KEY_STATION_ID = "userId";
public static final String KEY_REV_STATION_NAME = "revStationName";
public static final String KEY_DATE = "Date";
public static final String KEY_REV_FACILITY = "revFacility";
public static final String KEY_RATING = "Rating";
public static final String KEY_COMMENT = "Comment";
//Defining Field numbers for both tables
public static final int COL_STATION_NAME = 2;
public static final int COL_STATION_TYPE = 3;
public static final int COL_FACILITIES_TYPE = 4;
public static final int COL_LOCATION = 5;
public static final int COL_EMAIL = 5;
public static final int COL_STATION_ID = 1;
public static final int COL_REV_STATION_NAME = 1;
public static final int COL_DATE = 2;
public static final int COL_REV_FACILITY = 3;
public static final int COL_RATING = 4;
public static final int COL_COMMENTS = 5;
// declaring and initializing a string to get all fields from Establishment Table
public static final String[] ALL_KEYS = new String[]{KEY_ROWID, KEY_STATION_NAME,
KEY_STATION_TYPE, KEY_FACILITIES_TYPE, KEY_LOCATION, KEY_EMAIL, KEY_STATION_ID};
//declaring and initializing a string to get all fields from Review Table
public static final String[] ALL_REV_KEYS = new String[]{KEY_REVIEWROWID, KEY_REV_STATION_NAME,
KEY_DATE, KEY_REV_FACILITY, KEY_RATING, KEY_COMMENT};
// declaring and initializing database name, and the two tables
public static final String DATABASE_NAME = "FacilitiesReview";
public static final String DATABASE_TABLE = "Stations";
public static final String DATABASE_TABLE2 = "Review";
// declaring and initializing a variable for tracking DB version if a new version of
// the application changes the format.
public static final int DATABASE_VERSION = 2;
// declaring and initializing a string to create the Establishment Table
private static final String DATABASE_CREATE_SQL =
"create table " + DATABASE_TABLE
+ " (" + KEY_ROWID + " integer primary key autoincrement, "
+ KEY_STATION_NAME + " text,"
+ KEY_STATION_TYPE + " text,"
+ KEY_FACILITIES_TYPE + " text,"
+ KEY_LOCATION + " text,"
+ KEY_EMAIL + " text,"
+ KEY_STATION_ID + " text"
+ ");";
// declaring and initializing a string to create the Review Table
private static final String DATABASE2_CREATE_SQL =
"create table " + DATABASE_TABLE2
+ " (" + KEY_REVIEWROWID + " integer primary key autoincrement, "
+ KEY_REV_STATION_NAME + " text,"
+ KEY_DATE + " text,"
+ KEY_REV_FACILITY + " text,"
+ KEY_RATING + " text,"
+ KEY_COMMENT + " text"
+ ");";
// Creating the Context of application who uses us.
private final Context context;
private DatabaseHelper myDBHelper;
private SQLiteDatabase db;
/////////////////////////////////////////////////////////////////////
// Public methods:
/////////////////////////////////////////////////////////////////////
public SQL(Context ctx) {
this.context = ctx;
myDBHelper = new DatabaseHelper(context);
}
// Opening the database connection.
public SQL open() {
db = myDBHelper.getWritableDatabase();
return this;
}
// Close the database connection.
public void close() {
myDBHelper.close();
}
// Method for Adding a new establishment to the database.
public long insertStation(String strStationID, String strName, String strStationType, String strFacilities, String strLocation,
String strEmail) {
//assigning user input with database rows
ContentValues values = new ContentValues();
values.put(KEY_STATION_ID, strStationID);
values.put(KEY_STATION_NAME, strName);
values.put(KEY_STATION_TYPE, strStationType);
values.put(KEY_FACILITIES_TYPE, strFacilities);
values.put(KEY_LOCATION, strLocation);
values.put(KEY_EMAIL, strEmail);
// Inserting it into the database
return db.insert(DATABASE_TABLE, null, values);
}
// Method for Adding a new review to the database.
public long insertReviewRow(String strRevStation, String strDate, String strRevFacility, Float strRating, String strComment) {
//assigning user input with database rows
ContentValues review_values = new ContentValues();
review_values.put(KEY_REV_STATION_NAME, strRevStation);
review_values.put(KEY_DATE, strDate);
review_values.put(KEY_REV_FACILITY, strRevFacility);
review_values.put(KEY_RATING, strRating);
review_values.put(KEY_COMMENT, strComment);
//Inserting it into the database
return db.insert(DATABASE_TABLE2, null, review_values);
}
/* method for Deleting a row from the database Establishment Table,
by rowId (primary key/ Establishment)
from the Establishment Table */
public boolean deleteRow(long rowId) {
String where = KEY_ROWID + "=" + rowId;
return db.delete(DATABASE_TABLE, where, null) != 0;
}
// Method for fetching all data in the database from the Establishment Table.
public Cursor getAllRows() {
String where = null;
Cursor c = db.query(true, DATABASE_TABLE, ALL_KEYS,
where, null, null, null, KEY_STATION_NAME, null);
if (c != null) {
c.moveToFirst();
}
return c;
}
// Method for fetching all data in the database from the Review Table of the particular establishment
// (by using passed establishment)
public Cursor getAllReviewRows(String establishment) {
//String where = null;
String where = KEY_REV_STATION_NAME + " = '" + establishment + "'";
Cursor c = db.query(true, DATABASE_TABLE2, ALL_REV_KEYS,
where, null, null, null, KEY_DATE, null);
if (c != null) {
c.moveToFirst();
}
return c;
}
// Method for fetching data for a particular establishment (by using passed rowId)
public Cursor getRow(long rowId) {
String where = KEY_ROWID + "=" + rowId;
Cursor c = db.query(true, DATABASE_TABLE, ALL_KEYS,
where, null, null, null, null, null);
if (c != null) {
c.moveToFirst();
}
return c;
}
/////////////////////////////////////////////////////////////////////
// Private Helper Classes:
/////////////////////////////////////////////////////////////////////
/**
* Private class which handles database creation and upgrading.
* Used to handle low-level database access.
*/
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
// Method for creating the Database
public void onCreate(SQLiteDatabase _db) {
_db.execSQL(DATABASE_CREATE_SQL);
_db.execSQL(DATABASE2_CREATE_SQL);
}
@Override
// Method for upgrading the database
public void onUpgrade(SQLiteDatabase _db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading application's database from version " + oldVersion
+ " to " + newVersion + ", which will destroy all old data!");
// Destroying old database:
_db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
_db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE2);
// Recreate new database:
onCreate(_db);
}
}
public Cursor fetchStationsByName(String inputText) throws SQLException {
Log.w(TAG, inputText);
Cursor mCursor = null;
if (inputText == null || inputText.length() == 0) {
mCursor = db.query(DATABASE_TABLE, new String[]{KEY_ROWID,
KEY_STATION_ID, KEY_STATION_NAME, KEY_STATION_TYPE, KEY_FACILITIES_TYPE,KEY_LOCATION,KEY_EMAIL},
null, null, null, null, null);
} else {
mCursor = db.query(true, DATABASE_TABLE, new String[]{KEY_ROWID,
KEY_STATION_ID, KEY_STATION_NAME, KEY_STATION_TYPE, KEY_FACILITIES_TYPE,KEY_LOCATION,KEY_EMAIL},
KEY_STATION_NAME + " like '%" + inputText + "%'", null,
null, null, null, null);
}
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
}
只需使用[簡單] CursorAdapter的,順便說一句,爲什麼你叫moveToFirst返回光標之前? – pskink 2015-04-03 14:08:22
pskink。這些方法是在其他部分執行的,而不是我的問題所針對的部分。你可以給我一個提示或至少一個數據庫的代碼? – D4rkH34rt 2015-04-03 14:12:53
谷歌爲:android微調遊標適配器的例子 – pskink 2015-04-03 14:17:09