2017-02-08 2 views
1

サーバからのデータ(電話番号)が入力されたListViewがあり、2秒ごとにポーリングしています。 TalkBack機能がオンになっていて、リスト項目をタップすると、トークバックはリフレッシュが発生し、talkBackが呼び出されて文字列全体を読み取ることができなくなります。 TalkBackのコンテンツの説明が読み込まれているかどうかを検出する方法はありますか?ありがとうございました。Androidのアクセシビリティ - トークバックがコンテンツの説明を読み取っているかどうかを検出する方法はありますか

+0

をあなたのリストアダプタで安定したIDを可能にしたことがありますか? – alanv

+0

こんにちはAlanv。私はあなたのソリューションを試して、それは動作します。どうもありがとうございました!解決策を回答として投稿し、私はそれを受け入れます。 –

答えて

2

ListViewは、膨大なビューをデータセットの変更全体で再利用できるかどうかを判断するために値Adapter.hasStableIds()に依存します。

このメソッドがfalseを返した場合、変更前と変更後のデータセットの整合性がないと見なされます。その結果、アクセシビリティの焦点をどこに置くべきかはわかりません。

ただし、このメソッドがtrueを返し、アダプタがアイテムIDとデータの間の一貫したマッピングを維持する場合、ListViewは、データセット内の位置が変更されても、正しいアイテムにアクセシビリティフォーカスを維持できます。

この問題を修正するには、安定したIDを維持するためのアダプタを変更することができます。

class MyAdapter extends ListAdapter { 
    ... 

    @Override 
    public boolean hasStableIds() { 
     return true; 
    } 

    @Override 
    public long getItemId(int position) { 
     // Return a consistent mapping between the item at a given 
     // position and an arbitrary (but consistent!) ID associated 
     // with that item. 
     ... 
    } 
} 
関連する問題