私は単純なホーム画面ウィジェットを持っています。これはアイテムのリストを表示します。私は古いデバイスをサポートしたいので、ListViewの代わりにListViewを "エミュレートする"一連のTextViewオブジェクトを使用しています。ウィジェット:同じIDを持つビューのクリックを区別する
本当にうまく動作しますが、これらのアイテムにクリックリスナーを割り当てたいと思います。リスナーの中で私はそれらを区別して、アイテムのコンテンツに作用を及ぼしたいと思います。
これを行う方法? setOnClickPendingIntent
はビューのIDを取得するので、個々のアイテムに別々のインテントを割り当てることはできません。これらのIDはすべて同じIDを共有するため、タップされたアイテムはハンドラーによって認識されません。私はXMLレイアウトからのみRemoteViewをインスタンス化することができるので、異なるIDのアイテムを追加することはできません(レイアウトIDだけ異なるレイアウトファイルをたくさん作成する必要があります)。
ハニカムはsetOnClickFillInIntent
なので、私の問題を受け入れられる方法で処理していますが、私のウィジェットがGingerbreadで動作するようにしたい場合は使用できません。
現在、ウィジェットのレイアウトファイルは1つの空のコンテナと、行レイアウト用のファイルがあります。ウィジェットの更新中にRemoteViews.addView(ID、RemoteViews)を使用してそのコンテナに行を挿入しています。私があなたから答えたところでは、ウィジェットXML内の異なるIDを持ついくつかの行をハードコードし、addViewを使用しなくてはならないことを提案します(そして、すべての "行"に対してsetupClickIntentsを設定します)? – user1234567
@ user1234567:まあ、 'addView()'ロジックはあまり役に立たない。特定のアプリウィジェットサイズに対しては、多くの行しか持てません。とにかくユニークなウィジェットIDが必要なので、N個の行をメインアプリウィジェットのレイアウトに手動でクローンして一意のIDを渡すだけでよいでしょう。 – CommonsWare
私はXMLを1回更新するだけで、それ以降はビューツリーを変更しないので(これは私がaddView()メソッドを使っていたのと同じように)、少し早くすることもできます。ありがとう! – user1234567