Skocz do zawartości
woligmeat

Pobranie ID wiersza z bazy SQL

    Rekomendowane odpowiedzi

    Witam,
    Jestem w trakcie pisania aplikacji na androida. Napotkałem problem przy pobraniu ID wiersza z SQLite w Expandable List View.

    Kod funkcji która jest odpowiedzialna za wyświetlanie id wiersza: 

        public void deldata(View view){
            SQLiteDatabase db = friendDbHelper.getReadableDatabase();
    
            Cursor c = db.query(Friend.TABLE_NAME,
                    new String[]{Friend._ID, Friend.NAME},
                    null,null,null,null,null);
    
            while(c.moveToNext()){
                String name = c.getString(c.getColumnIndex(Friend.NAME));
                long id = c.getLong(c.getColumnIndex(Friend._ID));
                Log.e("MainActivity", id + ". "+ c.getPosition()+". " + name);
                //langs.add(id+ ". "+ c.getPosition()+". " +name);
                //friendDbHelper.deleteData(id);
                Toast.makeText(this, "id: " + id, Toast.LENGTH_SHORT).show();
            }
        }

     

    W jaki sposób pobrać id wiersza którego klikamy?

    Edytowane przez mmaciejow

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    mmaciejow

    Chcesz pobrać id z listy ListView? Jeśli tak to:

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
    
            int position = listView.getItemAtPosition(position); 
    
        }
    });

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Chcę pobrać ID elementu z bazy danych SQL który klikamy w ListView


     

    Edytowane przez woligmeat

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    mmaciejow

    Skorzystaj z kodu, który Ci podałem. Następnie zrób coś takiego:

    private String WHERE = "ID like ?";
    db.query(table, columns, WHERE , new String[] { id }, groupBy, having, orderBy)

     

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    @mmaciejow

    mam coś takiego:

            lstTask.setOnItemClickListener( new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Cursor data = dbHelper.showID(mTask.get(position).getName());
                   String positiona = (String) listView.getItemAtPosition(position);
                    if( data != null && data.moveToFirst() ){
                        Toast.makeText(getBaseContext(),"Task ID: "+positiona, Toast.LENGTH_SHORT).show(); //Dwa takie same zadania mają te same ID
                        data.close();
                    }
                }
            });

    I podczas kliknięcia w element listy listView pokazuje mi nazwe tego elementu.
    Problem w tym, że ja chcę żeby mi pokazywało ID tego elementu z bazy danych SQLite. Trzeba pamiętać, że może być kilka wierszy o takich samych nazwach.

     

    Takie coś tez sobie zrobiłem, pokazuje mi ID elementu ale gdy mam te same nazwy w tym listView to pokazuje mi to samo ID. Powinno mi pokazywać ID z bazy danych

            lstTask.setOnItemClickListener( new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Cursor data = dbHelper.showID(mTask.get(position).getName());
                   String positiona = (String) listView.getItemAtPosition(position);
                    if( data != null && data.moveToFirst() ){
                        Toast.makeText(getBaseContext(),"Task ID: "+data.getString(0), Toast.LENGTH_SHORT).show(); //Dwa takie same zadania mają te same ID
                        data.close();
                    }
                }
            });
    Edytowane przez woligmeat

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    mmaciejow

    @woligmeat jeśli poczekasz to w piątek napiszę Ci dokładnie jak to zrobić. 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    A skąd bierzesz dane do wyświetlenia na liście, też z bazy?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Tak, też są brane z bazy danych. 

    Najpierw dodaje do bazy danych jakiś ciąg znaków, potem jest to wyświetlane w listView. I teraz chciałem żeby po kliknięciu w element listView wystawiał się id tego elementu ale z bazy danych. 

    Chciałbym też zrobic żeby był obok przycisk usuń i po kliknięciu w niego usuwa się z bazy ten element przy którym kliknęliśmy przycisk usuń 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x