質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1963閲覧

【Android Studio】ListViewからIDを取得する方法

YonHan

総合スコア40

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2022/01/07 07:10

編集2022/01/13 04:17

前提・実現したいこと

SQLiteのDBでID(primary key autoincrement),TITLE,TIME,TODO1の4つの列があるテーブルを作り、
追加ボタンを押した後の遷移先でTITLE~TODO1の内容をテーブルに追加
ListViewを2つ(リストA、リストB)設置(それぞれ別の独自にカスタムしたアダプターを使っている)し、
リストAにはTITLEとTIMEの内容を、リストBにはTODO1の内容を表示したいと考えています。

リストAに格納したアイテムをクリックした時に、同じテーブルの行のTODO1の内容をリストBに表示する処理を追加したいと考えているのですが、クリックしたアイテムのIDを取得する方法がわかりません。

簡単に言うと、
クリックしたリストAのアイテム(TITLE、TIME)と同じテーブルの行にあるTODO1の内容を、リストBに表示したいです。
そのためにクリックしたリストAのアイテムと同じテーブルの行にあるIDを取得する必要があります。

該当のソースコード

Java

1//リストのアイテムを押した場合 2 public class OnItemClickListener implements AdapterView.OnItemClickListener { 3 public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { 4 //リストBに表示する処理 5 } 6 }

調べたこと

参考になりそうなサイト

補足情報(FW/ツールのバージョンなど)

Gradleバージョン:7.0.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2022/01/07 09:02

ListView のデータの持ち方が分からないと答えようがないです。というか、ListView が 2 つあるのは何故ですか?
YonHan

2022/01/08 07:02

それぞれ別のアダプターを使っているためです。
jimbe

2022/01/13 07:23 編集

> listviewのアダプターには、カスタムしたものを使っています そのコードをご提示ください、ということです。 というよりも、出来れば実行できる一式(コードやレイアウト等)をご提示ください。 > ListViewが2つあるのは、それぞれ別のアダプターを使っているため hoshi-takanori さんがお聞きしているのは恐らく、「1つの行のデータを、2つのビューに分けて表示するのは何故か」ということでしょう。 基本的には 1 行のデータということは 1 対 1 の関係ですので、分ける必要は無いはずだからです。 アダプタを 2 つ作ったからビューが 2 つというのは、考え方として逆ではないでしょうか。 ( ユーザへの情報の提供方法として ) ビューが 2 つ必要な為にアダプタが 2 つになった…というのなら分かりますが。
YonHan

2022/01/14 01:00 編集

そうでしたか... ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

OnItemClickListener.onItemClick には引数として long id があります。
この引数は Adapter.getItemId(int position) の戻り値が設定されてきます。
ですので、リストビューに設定しているアダプタで該当メソッドを Override し、 position の示すレコードの id を返すようにすれば、 OnItemClickListener.onItemClick でその id を取得・利用できます。

投稿2022/01/13 07:32

jimbe

総合スコア12625

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問