teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

微修正

2018/07/09 14:40

投稿

kakajika
kakajika

スコア3133

answer CHANGED
@@ -1,6 +1,6 @@
1
- GridViewなどのAdapterをセットする形式のViewは画面内に表示できるだけの子Viewを持つようになっているため、子Viewを直接取得してデータを書き換えるのではなく、Adapterにデータの更新を伝えることで子Viewの更新を促すようにすべきです。
1
+ GridViewなどのAdapterをセットする形式のViewは画面内に表示できるだけの子Viewを持つようになっているため、子Viewを直接取得して表示を書き換えるのではなく、Adapterにデータの更新を伝えることで子Viewの更新を促すようにすべきです。
2
2
 
3
- ご質問のコードのCalendarAdapter内にある `positionView` のように、子Viewにアクセスするためのキャッシュを持っておくのはアンチパターンなので削除しましょう。その代わりに、tx_shiftに関連するデータをAdapterに持たせ、 `getView()` 内でViewの設定をすべて行うようにします。Activity側では、Adapter内のデータを変更して、変更を通知するために `notifyDataSetChanged()` を呼べばOKです。
3
+ ご質問のコードのCalendarAdapter内にある `positionView` のように、子Viewにアクセスするためのキャッシュを持っておくのはアンチパターンなので削除しましょう。その代わりに、tx_shiftに関連するデータをAdapterに持たせ、 `getView()` 内でViewの設定をすべて行うようにします。Activity側では、Adapter内のデータを変更して、変更を通知するために `notifyDataSetChanged()` を呼べばOKです。
4
4
 
5
5
  ```java
6
6
  // 修正例