Wie rufe ich eine Reihe eines bestimmten ListItems von gefilterten ListView in Listaktivität mit SQLite -Daten ab?

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

Frage

Hallo allerseits, ich bin neu in Android, also bekomme ich ein Problem während der Entwicklung einer App mit der SQLite -Datenbank. Ich habe einige Datenspalten von abgerufen SQLite -Datenbanktabelle, speicherte sie in einem Anordnungsliste und zeigte sie mithilfe der Listaktivität an. Dann sah ich gut aus ListView -Filter Auch. Jetzt rief ich nach dem Filterung an Onlistitemclick Methode und nach dem Klicken auf einen beliebigen Position, Ich bin beim Abrufen von Rowid eines bestimmten ListItems der gefilterten ListView in ListActivity stecken bleiben und es in einer Ganzzahlvariablen zu speichern.

Kann jemand HILFE Ich zu wissen, wie es möglich ist.

Irgendwelche Ideen? Ich brauche Beispielcode -Snippets ... !!

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

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Du solltest benutzen SimpleCursoradapter Um die Liste mit Daten von DB zu füllen. In diesem Fall wird der Parameter "ID" von OnlistItemClick (L, V, Position, ID) eine ID des Datensatzes enthalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top