2016-07-12 13 views
1

現在、子どもの名前のリストを表示し、名前の横にある、彼らが学校に到着した時間を表示するAdapterクラスがあります。 問題が横に回転すると、時間の値が失われます。ランドスケープモードでフラグメントアクティビティからViewholderにアクセスする方法

アダプタクラスが似ている - 私はこれはとMainActivityタグの下にマニフェストでdelare

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(); 
     } 
    } 

- MyFragment活動に

android:configChanges="orientation|screenSize" 

、私が持っている -

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 
     } 
    } 
    } 

どのように横長モードで値を更新するには、viewHolderまたはTextViewの「time」にアクセスしますか?

答えて

1

あなたのフラグメントのごonCreateでこれを行うことができます。

setRetainInstance(true); 

アクティビティを再作成しないためにあなたのconfigChangesオプションを指定したので、これは必要ありませんので、他の何かが間違ってここに起こっています。

+0

私はconfigChangesを追加して以来、問題は現在、ランドスケープにポートレートレイアウトを追加していますが、時間値は失われません。私は、configChanges = screenSizeのために表示されていないランドスケープのレイアウトが異なります。どのように私はこれを克服するのですか? – Mark023

+0

OK、ポートレートとランドスケープのレイアウトが異なる場合、configChangesはまったく使用できません。ただし、setRetainInstanceを使用すると、向きが変わるとフラグメントがデータとともに保持されます。 –

+0

私はsetRetainInstance(true)で試してみましたが、まだ開発していません – Mark023

関連する問題