Android - SQLite, pobieranie danych z konkretnego wiersza.

0

Witajcie,
Mam problem z którym sobie nie umiem poradzić dlatego chciałbym prosić Was o nakierowanie. Próbowałem różnych kombinacji ale żadna nie zadziałała. Chciałbym pobierać z bazy danych SQLite i wyświetlać w odpowiednich polach, dane które siedzą w konkretnym wierszu. ID wiersza z którego chcę pobrać dane będę pobierał z pola w swojej aplikacji. Jednorazowo pobrany może zostać wyłącznie jeden wiersz. W wierszy jest 12 kolumn i konkretną wartość z konkretnej kolumny chcę wyświetlić w konkretnym polu. Nazwy moich kolumn siedzą w zmiennych COL_2, COL_3 itd. Pod COL_1 znajduje się ID. Mam coś takiego:

public Cursor undo(int id) {
        SQLiteDatabase db = this.getReadableDatabase();
        String sqlSelect = "SELECT " + COL_2 + ", " + COL_3 + ", " + COL_4 + ", " + COL_5 + ", " + COL_6 + ", " + COL_7 + ", " + COL_8 + ", " + COL_9 + ", " + COL_10 + ", " + COL_11 + ", " + COL_12 + ", " + COL_13 + " FROM " + TABLE_NAME + " WHERE " + COL_1 + "=" + id;
        Cursor res = db.rawQuery(sqlSelect, null);

        if(res != null) {
            res.moveToFirst();
        }
        return res;
    }

Teraz nie bardzo wiem jak pobrane wartości przekazać dalej no i jak przekazać ten parametr który będzie pobierany z pola :(. Oczywiście wszystko ma się dziać po wciśnięciu przycisku. Czy mógłbym prosić o jakieś podpowiedzi. Jak mówię, szukałem wszędzie ale żaden przykład, nawet po odpowiedniej modyfikacji, nie chce działać. Albo coś źle modyfikuję ale po prostu jest on nie właściwy.

---EDIT---
Powoli już zaczynam łapać. Utworzyłem przycisk w klasie MainActivity. W przycisku przekazuję parametr (swoje id wiersza z którego mają zostać pobrane dane, na razie wpisuję go na sztywno ale docelowo będzie pobierany z pola, z tym problemu nie mam żadnego). Tak to wygląda:

pokaz.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Cursor undo = matchDb.undo(1);



            }
        });

Problem mam teraz taki, w jaki sposób przekazać pobrane parametry z klasy obsługującej bazę, do klasy MainActivity aby móc później je wstawić w odpowiednie pola? Oczywiście mógłbym te pola podeklarować w swojej klasie obsługującej bazę i tam robić bezpośrednio przypisanie pobranych danych ale chcę to zrobić w klasie MainActivity ponieważ tam mam już wszystko poinicjowana. Wystarczy tylko przypisać. Tylko kurcze nie wiem jak te pobrane wartości przekazać do innej klasy :(

1

Mozesz dostac się do konkretnego wiersza poprzez moveToPosition na obiekcie Cursor
http://developer.android.com/reference/android/database/Cursor.html#moveToPosition(int)

0

Masz na myśli że mając zdefiniowany element TextView w aplikacji np:

...
TextView name1;
...
name1 = (TextView) findViewById(R.id.name1);
...

mogę zrobić coś takiego:

pokaz.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Cursor undo = matchDb.undo(1); 
                namet1.setText(undo.moveToPosition(0));
            }
        });

?

0

konkretne kolumny z cursora pobierasz przez metody:
getString(int columnIndex); getInt(int columnIndex); itp.

Czyli w twoim przypadku np:

 pokaz.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Cursor undo = matchDb.undo(1); 
                namet1.setText(undo.getString(columnIndex));
            }
        });

1 użytkowników online, w tym zalogowanych: 0, gości: 1