0

経由で sqlite データベースからデータを取得しSimpleCursorAdapter、結果を に表示していListViewます。データベースには、ID 文字列とともに連絡先情報が保持されます。リストビュー アイテムに表示されている 2 つのアイテムは、人の名前と電話番号ですが、ID 文字列 (UUID) は表示されていません。

では、ユーザーがこのリストビュー内の項目を押したとき、データベース内の対応する行をどのように識別できるのでしょうか? アイテムには名前と番号のみが含まれていますが、ID 列は含まれていません。つまり、データベースで適切な行を見つけることができません。

リスト項目に長い UUID 文字列を表示せずにこの問題を回避するにはどうすればよいですか?

4

4 に答える 4

1

に渡すカーソルSimpleCursorAdapterに UUID を含めます。カーソルに UUID が含まれているからといって、それを表示する必要があるわけではありません。次に、 OnItemClickListener.onItemClick()でクリックされたアイテムの位置を取得したら、 Cursor.moveToPosition()でその位置にカーソルを移動し、 Cursor.getString ( )で UUID を取得します。

もう 1 つの方法 (より洗練された方法)は、onItemClick に渡された AdapterView でgetAdapter()を呼び出してから、アダプターを CursorAdapter としてキャストし、カーソル アダプターでget getItem()を呼び出すことです。これにより、指定された位置に設定されたカーソル オブジェクトが返されます。

于 2013-08-02T12:53:41.523 に答える
1

OnItemClickListener の onItemClick() メソッドはリスト内の位置を渡します。Adapter にはメソッド getItem(int position) があります。getItem() からの結果を Cursor にキャストします。これは、クリックした行を指すように初期化されたカーソルになるため、ビューの内容に関係なく、元のクエリにあったデータを取得できます。

例: cursor.getString(cursor.getColumnIndex("phoneNumber")));

于 2013-08-02T12:59:12.517 に答える
0
  • カスタムアダプターを介してListViewに接続された配列にUUIDを保持できます
  • さらに、カスタム アダプターのビューに UUID を渡す setTag() を使用して、この UUID をビューに格納できます。
于 2013-08-02T12:54:02.960 に答える