¿Cómo recuperar ROWID de una lista de listado particular de ListView filtrado en ListActivity que muestra datos de SQLite?

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

Pregunta

Hola a todos, soy nuevo en Android, así que tengo un problema durante el desarrollo de una aplicación que usa la base de datos SQLite. Recuperé algunas columnas de datos de Tabla de base de datos SQLite, los almacenó en un Lista de arreglo y los mostró usando listActivity. Entonces hice un buen aspecto Filtro ListView además. Ahora, después de filtrar, llamé Onlistitemclick método y después de hacer clic en cualquier posición, Soy Atraparse al recuperar ROWID de una lista de listado particular de ListView filtrado en listActivity y almacenarlo en una variable entera.

Puede alguien AYUDA yo para saber cómo es posible.

¿Algunas ideas? Necesito fragmentos de código de ejemplo ... !!

Mi código:

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);
        }
    }
}

Gracias de antemano.

¿Fue útil?

Solución

Deberías usar SimpleCursorAdapter Para llenar la lista con datos de DB. En ese caso, el parámetro "ID" de OnlistitemClick (L, V, Posición, ID) tendrá una identificación de registro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top