1

画像のギャラリーがあり、現在選択されている画像の周りに赤い境界線を置きます (ユーザーが最初に画面を開いたときに最初の画像が選択されるため、最初のビューの周りに境界線を引きます)。

別のアイテムをクリックすると、新しいアイテムに赤い枠を描画し、前のアイテムの赤い枠を消したいです。

onClick問題は、ギャラリーのイベント内の境界線を変更できないことです。変更しても何も起こりません(ギャラリーのアイテムが再描画されないためだと思います)。postInvalidate()ギャラリー変数とその各ビューの両方で、invalidate() を呼び出そうとしましたが、うまくいきません! ビューは再描画されません (つまり、赤い境界線はギャラリーの最初のアイテムにのみ残ります)。

ここで何が起こっているのか、誰にも考えがありますか?

4

2 に答える 2

3

アダプタコードintで、選択したの位置となる値を保持しますView。のonItemClickedメソッドで、指定された位置で変数をGallery更新します。int次に、このgetView方法で、描画する位置が選択した位置である場合は、境界線を描画します。先に進んで、で提供されている境界線を適用するViewか、アダプターをonItemClicked呼び出すことができます。表示されているすべてのを再作成するnotifyDataSetChangedため、最初の方法が推奨されます。notifyDataSetChangedView

通常、再利用されたから境界線を削除できるように、選択された位置ではないかどうかも確認する必要がありますView。ただし、Gallery常に新しいを作成しViewます。convertViewの場合は常にnullですGallery

于 2012-05-04T03:14:13.067 に答える
0

requestLayout();を使用してみてください。幸運を。

于 2012-05-04T02:43:51.283 に答える