3

IDではなく、テーブル内のインデックス/位置で行を取得する方法はありますか?

たとえば、ID を持つ 3 つの行があります。

Record1
Record2
Record3

ID を使用して 2 番目の行を削除すると、残りの行は次のようになります。

Record1
Record3

位置を使用ListViewしてデータベース内のどの行を削除するかを決定しているため、次に 2 番目の行を削除しようとすると、ID 2 の行が存在しないため例外が発生します。

テーブル内のインデックスで行を取得できるメソッドはありますか?

4

2 に答える 2

10

item で表されるオブジェクトからレコードの ID を取得し、ListViewそれを使用してデータベース内の正しいレコードを取得することをお勧めします。あなたListViewOnItemClickListenerでは、onItemClickイベントは をAdapterView最初の引数として取り、選択された項目のインデックスを 2 番目の引数として取ります。アダプターからそのアイテムを取得し、それが表す型にキャストします。

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    YourClass c = (YourClass)arg0.getItemAtPosition(arg2);
    //index of the record to delete can now be accessed at c.id
}

ただし、本当にn 番目のレコードを取得したい場合は、次のことができると思います。

SELECT * FROM TableName LIMIT 1 OFFSET n;

n は、あなたが求めているインデックスです。これは、結果が にあるのと同じ方法で並べられていることも前提としていますListView

于 2013-02-08T22:54:36.787 に答える