2016-07-12 5 views
1

J'ai actuellement une classe Adapter qui affiche la liste des noms des enfants et à côté des noms, elle affiche l'heure à laquelle ils sont arrivés à l'école. Problème lorsque je fais pivoter en mode paysage, les valeurs temporelles sont perdues.Comment accéder au Viewholder à partir de l'activité Fragment en mode paysage

La classe adaptateur est comme -

public class MyAdapter extends CursorAdapter { 

@Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     View view = layoutInflater.inflate(R.layout.children_item, parent, false); 
     // Cache the views using the view holder pattern 
     ViewHolder viewHolder = new ViewHolder(); 
     viewHolder.childname = (TextView) view.findViewById(R.id.child_name); 
     viewHolder.time = (TextView) view.findViewById(R.id.child_time); 
     view.setTag(viewHolder); 
     return view; 
    } 

    @Override 
    public void bindView(View view, Context context, Cursor cursor) { 
     ViewHolder viewHolder = (ViewHolder) view.getTag(); 
     Child child = children.createStopFromCursor(cursor); 

        viewHolder.time.setText(strText); 
        viewHolder.time.setTextColor(0xff000000); 
        viewHolder.time.setTextSize(17); 
        viewHolder.time.setVisibility(View.VISIBLE); 
        viewHolder.time.setBackgroundColor(nColor); 
        viewHolder.time.setPadding(25,25,25,25); 
        view.invalidate(); 
     } 
    } 

Je Delare c'est manifeste sous MainActivity Tag comme -

android:configChanges="orientation|screenSize" 

Dans MyFragment Activité, j'ai -

public class MyFragment extends Fragment { 
    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 

     //How do I access viewHolder or TextView "time" here 
     } 
    } 
    } 

Comment accéder à viewHolder ou TextView "time" pour mettre à jour les valeurs en mode paysage?

Répondre

1

Vous pouvez le faire dans votre onCreate de votre Fragment:

setRetainInstance(true); 

Cependant, cela ne devrait pas être nécessaire puisque vous avez spécifié votre option configChanges de ne pas recréer l'activité, donc quelque chose d'autre va mal ici .

+0

Depuis que j'ai ajouté configChanges, le problème est maintenant d'ajouter la disposition portrait au paysage, mais les valeurs de temps ne sont pas perdues. J'ai une mise en page différente pour le paysage qui n'est pas affiché en raison de configChanges = screenSize. Comment puis-je surmonter cela? – Mark023

+0

OK, si vous avez des dispositions différentes pour le portrait et le paysage, vous ne pouvez pas du tout utiliser configChanges. Cependant, en utilisant setRetainInstance, votre fragment sera conservé avec ses données lorsque l'orientation change. –

+0

J'ai essayé avec setRetainInstance (true) mais toujours pas de développements – Mark023