問題タブ [linearlayoutmanager]
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.
android - アイテム削除時の Android LinearLayoutManager と再配置
LinearLayoutManager は、リサイクラーでアイテムを再配置するための基本的な実装を提供します。recyclerView で次の構成を想定しています。
E0 | え1え2え3 | E4
どこで | recyclerView の有効な境界を表します。E1 を削除すると、すべての再描画とアニメーションの後、次の最終設定になります。
E0 | E2 E3 E4 |
私は別の行動を達成する必要があります。基本的に欲しい
| | え0え2え3 | E4
画面の左または右のどの部分 (この場合は E2 に対して) に基づく他の要素の移動で、削除を行いました。基本的に、移動するパーツを選択するためのピボットとして、元の中心要素を使用する必要があります。
この動作は簡単には達成できないようです。stackFromEnd を設定しても問題は解決しません。これは、反対側の削除にアナログの問題があるためです。また、adapter.onItemRemoved を効果的に呼び出す前に実行時に stackFromEnd の値を変更しても、問題は解決しません。
android - デバイスのフォーマットに応じて LayoutManager を変更する
カードのリストを含む RecyclerView があります。電話を使用する場合は RecyclerView の LayoutManager を Linear に、タブレットを使用する場合は StaggeredGrid にプログラムで変更できるかどうかを知りたいです。私の最初のアイデアは、アクティビティに同じコードを配置し、layout.xml のみを変更することでしたが、Android が異なる LayoutManagers を使用していることを考えると、それよりも複雑ではないようです。また、Cardslib ライブラリを使用してみましたが、カスタム カードの完全な例がないため、ドキュメンテーションに非常に混乱しました。何か案は?
android - null ポインター例外のある RecyclerView
CMS からいくつかのニュース データを取得していて、それらを RecyclerView に表示したいと考えています。問題は、LinearLayoutManager を使用している行で null ポインター例外が発生していることです。logcat の出力は次のとおりです。
私が Web サービスの部分を行っている Fragment は非常に単純です。メソッドをコールバックするために使用します。ArrayList と RecyclerView を初期化している onCreateView と、Web サービスを実行している onActivityCreate です。
コードのこの部分が問題の原因です。
アプリの別のフラグメントで同じテクニックを使用してデータを取得しているため、これは奇妙です。
何か案は?
ありがとう。
android - RecyclerView は onLayoutChildren() でコンテンツを再描画します
私は正常に動作している RecyclerView ( FlowLayoutManager ) のカスタム LayoutManager を使用しています。これは、子のレイアウトに使用される関数です。
唯一の問題は、notifyDataSetChanges() または notifyItemChanges() を呼び出すと、onLayoutChildren() が再度呼び出され、recyclerview 全体がコンテンツを変更し、スクロールして一番上に戻ることです。
LinearLayoutManager がこの問題をどのように制御するかを確認しようとしましたが、私が望むほど理解できませんでした。
RecyclerView を現在の状態に保ち、コンテンツのみを変更するにはどうすればよいですか? または、以前と同じ位置にスクロールするにはどうすればよいですか?