ビューページャーに 3 ページあります。各ページには、最初はスタート ボタンとして設定されているボタンがあります。スタートボタンを押すと一時停止ボタンに変わります。私の問題は、最初のページで開始をクリックし (一時停止に変更)、最後のページまでスクロールして最初のページに戻ると、ボタンにもう一度開始と表示されることです。すでに押されている状態を失いました。ただし、これは 2 ページをスクロールした後にのみ発生します。1ページだけスクロールしてから戻っても、状態は失われません。
public Object instantiateItem(ViewGroup collection, int position) {
RelativeLayout wholeView = new RelativeLayout(collection.getContext());
// images
final ImageView workoutWidget = new ImageView(collection.getContext());
workoutWidget.setImageResource(R.drawable.workout_widget_master);
final ImageButton resetButton = new ImageButton(collection.getContext());
resetButton.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.reset_button_master));
RelativeLayout.LayoutParams resetButtonParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
resetButtonParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
resetButtonParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
resetButtonParams.height = 150;
resetButtonParams.width = 150;
resetButton.setLayoutParams(resetButtonParams);
resetButton.setVisibility(View.GONE);
final ImageButton startButton = new ImageButton(collection.getContext());
startButton.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.start_button_master));
startButton.setTag(context.getString(R.string.wtrStartButtonTag));
RelativeLayout.LayoutParams startButtonParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
startButtonParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
startButtonParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
startButtonParams.height = 150;
startButtonParams.width = 150;
startButton.setLayoutParams(startButtonParams);
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startButton.setAlpha(1.0f);
if (startButton.getTag() == context.getString(R.string.wtrStartButtonTag)) {
startButton.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.pause_button_master));
startButton.setTag(context.getString(R.string.wtrPauseButtonTag));
resetButton.setVisibility(View.VISIBLE);
}
else if (startButton.getTag() == context.getString(R.string.wtrPauseButtonTag)) {
startButton.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.start_button_master));
startButton.setTag(context.getString(R.string.wtrStartButtonTag));
}
}
});
// text labels view
LinearLayout textLabels = new LinearLayout(collection.getContext());
textLabels.setOrientation(LinearLayout.VERTICAL);
TextView activityDescription = new TextView(collection.getContext());
activityDescription.setText("Warm-up");
activityDescription.setPadding(200, 200, 0, 0);
activityDescription.setTextSize(30);
textLabels.addView(activityDescription);
TextView timeLeftForThisActivity = new TextView(collection.getContext());
timeLeftForThisActivity.setText("00:00");
timeLeftForThisActivity.setPadding(200, 0, 0, 0);
timeLeftForThisActivity.setTextSize(60);
textLabels.addView(timeLeftForThisActivity);
LinearLayout elapsedLabels = new LinearLayout(collection.getContext());
elapsedLabels.setOrientation(LinearLayout.HORIZONTAL);
TextView elapsedTimeStatic = new TextView(collection.getContext());
elapsedTimeStatic.setText("Elapsed Time: ");
elapsedTimeStatic.setPadding(200, 0, 0, 0);
elapsedTimeStatic.setTextSize(20);
TextView elapsedTimeDynamic = new TextView(collection.getContext());
elapsedTimeDynamic.setText("00:00");
elapsedTimeDynamic.setPadding(0, 0, 0, 0);
elapsedTimeDynamic.setTextSize(20);
elapsedLabels.addView(elapsedTimeStatic);
elapsedLabels.addView(elapsedTimeDynamic);
textLabels.addView(elapsedLabels);
// adding images and text to overall view
wholeView.addView(workoutWidget);
wholeView.addView(startButton);
wholeView.addView(resetButton);
wholeView.addView(textLabels);
collection.addView(wholeView, 0);
return wholeView;
}