Wie rufe ich eine Reihe eines bestimmten ListItems von gefilterten ListView in Listaktivität mit SQLite -Daten ab?
-
26-10-2019 - |
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.
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.