Évolution du nombre de colonnes avec GridLayoutManager et RecyclerView

À l'intérieur de mon fragment je suis mon GridLayout de la façon suivante:
mRecycler.setLayoutManager(new GridLayoutManager(rootView.getContext(), 2));

Donc, je veux juste changer que 2 pour un 4 lorsque l'utilisateur fait pivoter le téléphone/tablette. J'ai lu sur onConfigurationChanged et j'ai essayé de le faire fonctionner pour mon cas, mais il ne va pas dans le droit chemin. Quand je tourne mon téléphone, l'application se bloque...

Pourriez-vous me dire comment résoudre ce problème?

Voici ma démarche pour trouver la solution, qui ne fonctionne pas correctement:

  @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        int orientation = newConfig.orientation;

        if (orientation == Configuration.ORIENTATION_PORTRAIT) {
            mRecycler.setLayoutManager(new GridLayoutManager(mContext, 2));
        } else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
            mRecycler.setLayoutManager(new GridLayoutManager(mContext, 4));
        }
    }

Merci d'avance!

  • s'il vous plaît ajouter de crash
  • Je viens de prendre un coup d'oeil à mon logcat et ce n'était pas l'origine du crash. Mais il ne fonctionne toujours pas.
  • Je ne voudrais pas créer un nouveau manager, mais au lieu d'utiliser l'existant. Utilisation getLayoutManager() sur votre recyclerview, jette à GridLayoutManager. Sur que gestionnaire d'appel setSpanCount(orientation == portrait ? 2 : 4) Et pour le bien de redessiner l'avis d'appel adaper.notifyDatasetChanged (), Cela devrait fonctionner correctement si votre vue n'est pas redessiné à chaque fois.
  • WOW! C'est du son comme je cherchais, mais je n'ai pas su comment l'atteindre. Je vais essayer de vous parler.
  • Notez qu'il est toujours une bonne idée de vérifier l'orientation lors de la création de la vue elle-même. Que vous faites habituellement dans onCreate, pour des Activités ou onCreateView pour des fragments. Assurez-vous que vous le faites parce que vos utilisateurs peuvent démarrer l'activité en mode paysage
  • Ne fonctionnait pas, je pense que c'est à cause de la vue d'être redessiné.
  • Oui. La vue par défaut est corrigé lorsque vous cange l'orientation, alors assurez-vous que vous la gérer il.
  • Votre question a très bien fonctionné pour moi, je ne sais pas pourquoi le vôtre a été s'écraser. Avez-vous jamais comprendre pourquoi?
  • Regarde @SobaDeveloper. J'ai changé le de mon onResume() pour mon onCreateView()
  • En gros, j'ai mis en œuvre à la fois de vos réponses. Je suis surpris que cela n'a pas obtenu plus d'attention. Je vois beaucoup de demandes de ce faire.

InformationsquelleAutor fapps | 2015-04-11