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」にアクセスしますか?
私はconfigChangesを追加して以来、問題は現在、ランドスケープにポートレートレイアウトを追加していますが、時間値は失われません。私は、configChanges = screenSizeのために表示されていないランドスケープのレイアウトが異なります。どのように私はこれを克服するのですか? – Mark023
OK、ポートレートとランドスケープのレイアウトが異なる場合、configChangesはまったく使用できません。ただし、setRetainInstanceを使用すると、向きが変わるとフラグメントがデータとともに保持されます。 –
私はsetRetainInstance(true)で試してみましたが、まだ開発していません – Mark023