sqliteデータを表示するリストアクティビティのフィルタリングされたリストビューの特定のリストのrowidを取得する方法は?
-
26-10-2019 - |
質問
みなさん、こんにちは。私はAndroidに属しているので、SQLiteデータベースを使用してアプリを開発する際に1つの問題が発生しています。からいくつかのデータ列を取得しました SQLiteデータベーステーブル, 、それらをanに保存しました 配列リスト と ListActivityを使用して表示しました. 。それから私は見栄えを良くしました ListViewフィルター また。フィルタリングの後、私は電話しました onlistitemclick メソッドとクリック後 位置, 、 私は ListActivityのフィルター処理されたリストビューの特定のリストのRowidを取得することに閉じ込められます 整数変数に保存します。
誰でもできます ヘルプ 私はそれがどのように可能であるかを知っています。
何か案は?コードスニペットの例が必要です... !!
私のコード:
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);
}
}
}
前もって感謝します。
解決
使用する必要があります SimpleCursoradapter リストをDBのデータに埋めるため。その場合、onlistitemclick(l、v、position、id)の "id"パラメーターはレコードのIDを保持します。
所属していません StackOverflow