Как перейти на новую активность не по позиции, а по _id в таблице sqlite - PullRequest
0 голосов
/ 08 октября 2019

Привет. Есть таблица, из которой данные отображаются в ListView по позиции. Все отлично работаетНо если в таблице есть пробелы, это становится проблемой. Как я могу перейти к желаемой активности по _id в таблице, а не по позиции? Прошу помощи, буду очень признателен. Спасибо всем большое! Ниже мой код:

Это мой код MainActivity.java

this.listView = findViewById(R.id.listView);
    DatabaseAccess databaseAccess = DatabaseAccess.getInstance(this);
    databaseAccess.open();
    List<String> quotes = databaseAccess.getQuotes();
    databaseAccess.close();
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
    android.R.layout.simple_list_item_1, quotes);
    this.listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            if(id==0){
                Intent myintent = new 
    Intent(view.getContext(),MosObl.class);
                startActivityForResult(myintent,0);
            }
            if(id==1){
                Intent myintent = new 
    Intent(view.getContext(),Arhangelsk.class);
                startActivityForResult(myintent,1);
            }
            if(id==2){
                Intent myintent = new 
    Intent(view.getContext(),Astrahan.class);
                startActivityForResult(myintent,2);
            }

Это мой код DatabasesAccess.java

public List<String> getQuotes() {
    List<String> list = new ArrayList<>();
    Cursor cursor = database.rawQuery("SELECT * FROM regiones where izbrannoe = 1", null);
    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
        list.add(cursor.getString(0));
        cursor.moveToNext();
    }
    cursor.close();
    return list;
}

1 Ответ

0 голосов
/ 08 октября 2019

С позицией элемента, по которому щелкнули (это единственное, что вы сможете получить напрямую), вы можете получить цитату из списка «цитаты», используя:

final String desiredQuote = quotes.get(position);

Затем,сделав запрос к вашей базе данных, вы сможете получить нужный идентификатор. Что-то вроде:

final Cursor cursor = database.rawQuery("SELECT _id FROM regiones where izbrannoe = 1 AND quote=?",new String [] {desiredQuote});

Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...