Выберите на ListView элементы и показать пользователям разные таблицы базы данных - PullRequest
0 голосов
/ 19 февраля 2020

Я создаю игру для поиска слов и у меня есть представление списка в 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...