2016-10-28 29 views
0

Jungs Ich entwickle Android TV App, so dass ich Recyclerview horizontal und vertikal verwendet, und ich habe eine Methode verwendet, Adapter von vertikalen Recyclerview mit Adapter.notifyDataSetChanged() zu aktualisieren, aber ich bekomme ein Problem. 1. Es ist Fokus weg und auf drücken Sie keine D-Pad-Taste funktioniert nicht nur richtige Taste funktioniert 2. Ich habe adapter.notifyItemRangeChanged (0, categoryDataList.size()), aber ich habe immer noch ein Problem, das es ist Der Schwerpunkt liegt auf dem ersten Element des Layouts, ansonsten auf dem Layout. Also Bitte helfen Sie mir so schnell wie möglich. Vielen Dank im Voraus.Fokus verloren auf der Aktualisierung in Recyclerview

+0

Können Sie Ihren Code als Referenz – EKN

+0

onCreate (Bundle savedInstanceState) { . . adapter = neuer DemoVerticalRecyclerAdapter (this, categoriesVideoList, categoryDataList, mainMenuDataList); \t \t verticalListView.setAdapter (Adapter); . . } – ajay

+0

private void refreshedData() { \t \t runnable = new Runnable() { \t \t \t @Override \t \t \t public void run() { \t \t \t \t Log.e (TAG „, aktualisiert Daten starrt ....... "); \t \t \t \t // isRefreshedData = true; \t \t \t \t neu MyAsycTas(). Execute(); \t \t \t \t Handler.removeCallbacks (runnable); \t \t \t \t focusedElement(); // \t \t \t \t select(); \t \t \t \t handler.postDelayed (ausführbar, 9000); \t \t \t} \t \t}; \t \t // handler.postDelayed (runnable, \t \t // Integer.valueOf (MyStaticClass.refreshTime) * 60000); \t \t handler.postDelayed (ausführbar, 9000); } \t – ajay

Antwort

0

Verwendung notifyItemRangeInserted (Position, Größe); Wenn Sie Elemente einfügen.

+0

Ich habe horizontale und vertikale Recyclerview und bekommen Antwort vom Server und wir haben keine Ahnung, dass Element hinzufügen oder entfernen, so dass ich mit notifyItemRangeChanged bin, aber mein Fokus geht oben – ajay

4

Natürlich verlieren Sie den Fokus! Es gibt keine Ansicht, um den Fokus zu erhalten, wenn Sie RecyclerView von Call-Methode aktualisieren notify * Geändert.

Ich habe eine unvollkommene Möglichkeit, Fokus in Recyclerview zu halten, wenn Sie notifyDatasetChanged() anrufen.

  1. Overrite Methode GetItemID(), um eine stabile ID jedes Element geben: @Override
    public long getItemId(int position) {
    return position;
    }
  2. Set hat StableId: adapter.setHasStableIds(true);
  3. Jetzt im Grunde können Sie Fokus in einem konkreten Punkt, wenn der Anruf notifyDatasetChange halten, wenn nicht Animator, diable:
    mRecyclerView.setItemAnimator(null);

über stabile i d: Android: How to make an adapter with stable ids?
über disable Animator: How to implement ItemAnimator of RecyclerView to disable the animation of notifyItemChanged
über den Grund von step3 in Google Code:
https://code.google.com/p/android/issues/detail?id=204277

Viel Glück!

Verwandte Themen