Comment récupérer rowId d'un listitem particulier de listview filtré dans ListActivity l'affichage des données SQLite?

StackOverflow https://stackoverflow.com/questions/6314628

Question

Bonjour à tous je suis nouveau être dans Android si je reçois un problème lors de l'élaboration d'une application en utilisant la base de données SQLite. Je récupérai des colonnes de données à partir de table de base de données SQLite , les a stockés dans un ArrayList et les afficher à l'aide ListActivity . Puis j'ai fait une belle recherche Filtre ListView aussi. Maintenant, après filtrage, j'ai appelé onListItemClick Méthode et après avoir cliqué sur une position , je suis rester coincé dans la récupération rowId d'un listitem particulier de listview filtré dans ListActivity et à stocker dans une variable entière.

Quelqu'un peut-il AIDE moi de savoir comment il est possible.

Des idées? J'ai besoin exemple des extraits de code ... !!

Mon code:

package com.aman.samples.dbdemo;

import java.util.ArrayList;
import com.aman.samples.dbdemo.helpers.DatabaseHelper;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Filterable;
import android.widget.ListAdapter;
import android.widget.ListView;

public class Searching extends ListActivity {

    public static final String KEY_ROWID = "RowId";
    private final String DB_NAME="Database.sqlite"; // data base name 
    private final String TABLE_NAME="Physics";   // table name  
    private SQLiteDatabase myDataBase;
     ArrayAdapter<String> adapter;
    EditText filterText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.searching);

        final ArrayList<String> list=new ArrayList<String>();


        myDataBase=this.openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null);
        DatabaseHelper dbHelper = new DatabaseHelper(getApplicationContext());
        dbHelper.openDataBase();

        Cursor c=myDataBase.rawQuery(" select * from "+TABLE_NAME,null);
        if(c!=null)  // if c value is not null 
        {
            if(c.moveToFirst())  // movies first column 
            {
                do
                {
                    String nam=c.getString(c.getColumnIndex("Law")); // getting specific values regarding column index 
                //  int age=c.getInt(c.getColumnIndex("age"));
                    list.add(" "+nam);

                }while(c.moveToNext()); // move to next row

            }
        }


         filterText = (EditText) findViewById(R.id.search_box);
        filterText.addTextChangedListener(filterTextWatcher);


        adapter=new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, 
                list);
        setListAdapter(adapter);


    }

    private TextWatcher filterTextWatcher = new TextWatcher() {

        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub

        }

        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        public void onTextChanged(CharSequence s, int start, int before,
                int count) {

            adapter.getFilter().filter(s);
        }



    };

    @Override
    protected void onDestroy() {
        super.onDestroy();
        filterText.removeTextChangedListener(filterTextWatcher);
    }

    protected void onListItemClick(ListView l,View v,int position,long id){
        super.onListItemClick(l, v, position, id );





        if(position==0)
        {

                   Integer rowId = .........// I WANT A SOLUTION OR METHOD TO RETRIEVE ROW ID OF PARTICULAR LISTITEM IN LISTACTIVITY DISPLAYING DATAS FROM SQLITE DATABASE TABLE


            String s=Integer.toString(rowId);

            Intent i=new Intent(this,FinalView.class);
            i.putExtra("key1", s);
            startActivity(i);
        }
        if(position==1)
        {

         Integer rowId = .........// I WANT A SOLUTION OR METHOD TO RETRIEVE ROW ID OF PARTICULAR LISTITEM IN LISTACTIVITY DISPLAYING DATAS FROM SQLITE DATABASE TABLE

            String s=Integer.toString(rowId);

            Intent i=new Intent(this,FinalView.class);
            i.putExtra("key1", s);
            startActivity(i);
        }
        if(position==2)
        {

               Integer rowId = .........// I WANT A SOLUTION OR METHOD TO RETRIEVE ROW ID OF PARTICULAR LISTITEM IN LISTACTIVITY DISPLAYING DATAS FROM SQLITE DATABASE TABLE
            String s=Integer.toString(rowId);
            Intent i=new Intent(this,FinalView.class);
            i.putExtra("key1", s);
            startActivity(i);
        }
    }
}

Merci à l'avance.

Était-ce utile?

La solution

Vous devez utiliser SimpleCursorAdapter pour la liste populate avec les données de DB. Dans ce cas, le paramètre "id" de onListItemClick (l, v, la position, id) tiendra id du disque.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top