1

やあ

ListViewを含むレイアウトがあります。この ListView の各ビュー (行) は、3 つのビュー (CheckBox、ImageView、および TextView (水平)) を含む LinearLayout です。

私の問題は次のようなものです-トラックボールを使用してListViewの行を強調表示すると、機能します(行の背景色はオレンジです)。行が強調表示されているときにトラックボールをクリックすると、現在表示されているレイアウトを別のレイアウトに切り替えます (setContentView())。ここで、ListView を使用して元のレイアウトを再表示すると (再表示するためにインスタンスを保存しますが、再作成されません!)、強調表示された行は強調表示されなくなります。Google によると、これは問題なく、トラックボールを使用するとすぐにハイライトが表示されます。

本当の問題は、トラックボールを使用してリスト内を上下に移動しても、ListView の他の行が強調表示されないことです。代わりに、スクロールの結果として強調表示される必要がある各行で、TextView が選択され、TextView をティック (TruncateAt.MARQUEE) に設定したため、それがわかりました。

トラックボールをクリックした場合にのみ、その TextView が現在刻んでいる行にハイライトが戻ります。

TextView をフォーカス不可、クリック不可、無効に設定することで、この問題を解決しようとしました。ListView で setItemsCanFocus(false) を設定しようとしましたが、まだ成功していません。

助けてください...ありがとう!

4

1 に答える 1

0

ListView を含むレイアウトがあります。この ListView の各ビュー (行) は、CheckBox、ImageView、TextView (水平) の 3 つのビューを含む LinearLayout です。

代わりに、と を使用CheckedTextViewImageView、 と一緒に使用android:choiceModeしますListView

ここで、ListView を使用して元のレイアウトを再表示すると (再表示するためにインスタンスを保存しますが、再作成されません!)、強調表示された行は強調表示されなくなります。

そうしないでください。を使用するViewFlipperか、 の可視性を変更し、表示している他のものを変更します。ListViewこれをすべて 1 つにまとめておく必要がある場合は、Activityまたは、Lew 氏が提案するように、 をクリックしてListView別の を起動しActivityます。

これらの組み合わせが問題の解決に役立つと思います。

于 2010-01-13T16:02:00.567 に答える