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

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

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

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

Android Studio

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

2回答

2376閲覧

listViewのImageViewやtextViewだけsetOnClickListenerを入れたい

chirunote

総合スコア16

Android

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

Android Studio

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2019/10/08 14:21

編集2019/10/09 00:34

listViewの中の画像やテキストにだけsetOnClickListenerを設定する方法はないでしょうか?

リストそのものにクリックイベントを適応させることはできたのですが

val items = arrayListOf<String>("セリフ1","セリフ2","セリフ3") val adapter = ArrayAdapter<String>(this, R.layout.list_item, R.id.text1,items) listView.adapter = adapter listView.setOnItemClickListener { adapterView, view, position, id -> Toast.makeText(applicationContext, "セリフ:${view}", Toast.LENGTH_SHORT).show() } }

やりたいのは・・・
イメージ説明
右の音声アイコンを押すと音が出て、左のOFFボタンを押すとラジオボタンのように選択されてボイスが選ばれるというものです。(音の出し方やラジオボタンはコチラでなんとかします)

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

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

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

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

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

guest

回答2

0

ベストアンサー

AdapterのgetViewメソッド内で任意のViewに対しsetOnClickListenerを呼んで、自前でアイテムクリックの実装をするようにしてください。
OnItemClickListenerのインターフェースは独自に定義してもいいですが、Android標準のものを流用するなら以下のような実装になると思います。

kotlin

1val itemClickListener = OnItemClickListener { adapterView, view, position, id -> 2 // アイテムクリック時の処理… 3} 4 5val adapter = object : ArrayAdapter<String>(this, R.layout.list_item, R.id.text1, items) { 6 override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { 7 val itemView = super.getView(position, convertView, parent) 8 itemView.text1.setOnClickListener { v -> 9 itemClickListener.onItemClick( 10 parent as AdapterView<*>?, v, position, getItemId(position) 11 ) 12 } 13 return itemView 14 } 15}

投稿2019/10/08 23:18

kakajika

総合スコア3131

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

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

chirunote

2019/10/09 00:54

ありがとうございます、解決しました。下記内容でテキストとボタン、それぞれ違うトーストが出せるようになりました。 -------------------------------- var items = arrayListOf<String>("セリフ1","セリフ2","セリフ3") val itemClickListener = AdapterView.OnItemClickListener { adapterView,view,position,id -> Toast.makeText(applicationContext, "セリフ:${id}", Toast.LENGTH_SHORT).show() } //追加した自分のクリックリスナー val hidariNoOtoBTN = AdapterView.OnItemClickListener { adapterView,view,position,id -> Toast.makeText(applicationContext, "左の音声:${id}", Toast.LENGTH_SHORT).show() } val adapter = object : ArrayAdapter<String>(this, R.layout.list_item, R.id.text1, items) { override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { val itemView = super.getView(position, convertView, parent) itemView.text1.setOnClickListener { v -> itemClickListener.onItemClick( parent as AdapterView<*>?, v, position, getItemId(position) ) } //追加した自分のクリックリスナー itemView.bt_hidari.setOnClickListener { v -> hidariNoOtoBTN.onItemClick( parent as AdapterView<*>?, v, position, getItemId(position) ) } return itemView } } listView.adapter=adapter
guest

0

以下のサイトが参考になります。

対象要素をfindViewByIdで取得してsetOnItemClickListenerでClick時の動作を実装すればできるはずです。

投稿2019/10/08 15:26

nakasho_dev

総合スコア2655

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

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

chirunote

2019/10/08 23:09

ありがとうございます、URL拝見しました。 val adapter = ArrayAdapter<String>(this, R.layout.list_item, R.id.text1,items) を消して、一番上のListadapterのclassの書き方でリストの表示とクリックできるようにはなったのですが、そこから先どうしたらよいでしょうか? なんとなくtextViewを真似て val imgVeiwH=itemView.findViewById(R.id.bt_hidari) as ImageView などと書いたりするのですがソコから先どうしたものかわからず
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問