0
私はAccessibilityService
で働いています。は、他のアプリのレイアウトを訪問します。例えばRecyclerViewレイアウトの動作
私はカスタムレイアウトを持っている場合は、私が焦点は、このように、XMLの各ビューの取り扱い精密たい:
<View
...
android:nextFocusDown="@id/another_view_id"
android:nextFocusLeft="@id/another_view_id"
android:nextFocusRight="@id/another_view_id"
android:nextFocusUp="@id/another_view_id" />
私はListView
を使用する場合、私はいくつかを送信することにより動作を定義しKEYCODE_DPAD_UP
またはKEYCODE_DPAD_DOWN
をシステムに挿入してレイアウトをナビゲートします。
ここではRecyclerView
を使用する必要があり、ビューのアイテムを正しい順序でどの程度正確に訪問できるかわかりません。
私は正しい順序で意味:
して誰かが配置順序がRecyclerView
で動作途中で私を啓発することができますか?
したがって、RecyclerViewsはViewHolderパターンの周りに構築されています。リストビューは、これによって救済された大きな非効率を許していました。しかし、これは、ビュー自体がリサイクルされているため、アダプタ内から位置特定のビューを管理することがより困難になったことを意味していました。幸いにも、RecyclerViewの構築には 'LayoutManager'が必要です。このLayoutManagerには、 'findViewByPosition()'メソッドがあります。これは、それぞれのビューの 'setNextFocus [Direction]()'メソッドと組み合わせて使用します。 – zgc7009
現在、私のプロジェクトアーキテクチャは次のように機能しています。異なる種類のレイアウト(ListView、タブ付きのアプリケーション、GridView、RecyclerView)があり、私はそれらのそれぞれについて「訪問者」を作成しました。そして彼ら自身に対応する 'AccessibilityEvent'を受け取ります。つまり、* ie * my 'ListView'はアイテム数と現在選択されているアイテムのインデックスを受け取る' ListViewVisitor'を持っています。 このようなアーキテクチャと説明では、レイアウトマネージャとfindviewにアクセスすることができません。これはどのように動作させることができません。私はそれについて再考する必要があります。 –