問題タブ [android-view-invalidate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
183 参照

listview - ListView / GridViewがフラグメント内で更新されない

フラグメントの他の要素は更新されますが、リストビューとグリッドビューだけは更新されません。アダプターのコンテンツが変更されていることをログで確認できますが、ビューはクリックするか onResume() をクリックしたときにのみ更新されます。

UIThread、listview.invalidateViews()、gridview.invalidateViews()、requestLayout()、requestFocus()、および performClick() で、adapter.notifyDataSetChanged() および adapter.notifyDataSetInvalidated() を既に試しました。ビューエリア。

また、フラグメントをデタッチ/アタッチしようとしました。

gridview.setAdapter を再度試行すると、内容が空白になり、gridview 領域をクリックすると更新されて表示されます。

AndroidAnnotations を使用しています。

Adapter2 は Adapter1 と同じですが、モデルとアイテムが異なります。項目は、モデルをビュー要素にバインドするだけの @ViewGroups です。

編集:現在、最もうまく機能しているのは requestFocusFromTouch() ですが、グリッチ感があります。

0 投票する
1 に答える
806 参照

android - 別のクラスからinvalidate()メソッドを呼び出す方法は?

Android アプリケーションのカスタム ビューにピンチ ズーム機能を実装しようとしています。私はそれを行うために次のクラスを使用しています。

invalidate()内部で上記のようにメソッドを呼び出したいのですonScaleが、これはカスタム ビューの外部にあるため、間違っています。ただし、次のようにここでカスタムビューをインスタンス化することでそれを実行しようとしています。

しかし、これもエラーを返します。カスタム ビューをインスタンス化できません。では、ここで invalidate() メソッドを呼び出す方法は?

0 投票する
0 に答える
937 参照

android - フラグメント ビューを無効にするにはどうすればよいですか?

さて、ユーザー アカウント情報を表示するフラグメントができました。

これが機能する方法は、既にキャッシュされている情報に応じて、サーバーにアクセスする場合とアクセスしない場合があるリクエストを発行することです。

情報が利用可能になると、フラグメントがテキストフィールドを更新するコールバックがあります。

ただし、その時点でUIを更新する必要があるため、何らかの形で発行したいと思いinvalidateます...

それが完全に何もしないことを除いて。

this.viewまず、 が返されることに気付きましたnull。そのため、それに頼るのではなく、作成したビューをonCreateView明示的に保存します。

次に、テキストフィールドを更新した後、fragmentView.postInvalidate()... を呼び出しますが、何もしません。

私も試しdoAsync { uiThread { fragmentView.invalidate() } }ました...これも何もしません。

それから私はこの答えを見つけて試しました

...これは、何もしないよりもさらに悪いことです。他の 2 つの方法では、別のフラグメントに切り替えて元に戻すと、少なくともビューが更新されますが、これは有用な情報の表示を永久に拒否します。

super::setUserVisibleHintしたがって、値を更新するまで呼び出しを遅らせることで「ごまかす」ことができるかもしれません...いいえ、できません。

ただし、何かを乾杯することで、UI を強制的に再描画することができます。それが私が現在していることです。しかし、それでも解決にはなりません。

適切な UI リフレッシュを取得するにはどうすればよいですか?

ああ、これはです。問題があれば、フラグメントを切り替えるためにandroid.support.v4.app.Fragmentを使用しています。android.support.v4.app.FragmentStatePagerAdapter

完全なフラグメント コード: