Я создаю игру для поиска слов и у меня есть представление списка в MainActivity, которое, когда я нажимаю на 1 элемент в списке, должно открыть конкретную таблицу (TABLE_NAME) в базе данных. Как я могу вызвать TABLE_NAME из MainActivity без жесткого кодирования TABLE_NAME в SQLiteAssetHelper?
Большое спасибо за вашу помощь.
Фрагмент кода из MainActivity:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (position == 0) {
Intent myIntent = new Intent(view.getContext(), GameActivity.class);
String tableName="heart";
myIntent.putExtra("TABLE_NAME", tableName);
startActivityForResult(myIntent, 0);
Фрагмент кода из GameActivity
private void selectWords(){
String count = Settings.getStringValue(this, getResources().getString(R.string.pref_key_num_words_to_select), "1000");
WSDatabase wsd = new WSDatabase(this);
Intent myIntent = getIntent();
String tableName = myIntent.getStringExtra("TABLE_NAME");
wsd.open();
wordList = wsd.getRandomWords(Integer.parseInt(count));
wsd.close();
}
Код из базы WSD
public class WSDatabase extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "wordsearchfinal.db";
private static final int DATABASE_VERSION = 1;
private String TABLE_NAME = "heart"; // i would like to get this table name from the listview on the MainActivity
private Context context;
private SQLiteDatabase database;
public WSDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
setForcedUpgrade();
this.context = context;
}
public void open(){
database = getReadableDatabase();
}
public String[] getRandomWords(int count){
Cursor cursor = database.query(TABLE_NAME +" Order BY RANDOM() LIMIT " + count, new String[] { "*" }, null, null, null, null, null);
cursor.moveToFirst();
int len = cursor.getCount();
String[] words = new String[len];
int i = 0;
while (!cursor.isAfterLast()) {
words[i++] = cursor.getString(0);
cursor.moveToNext();
}
cursor.close();
return words;
}