хорошо, у меня есть специальный адаптер, который будет отображать упражнение, время и выбрано упражнение или нет. Когда пользователь нажимает на значок часов внутри каждого элемента в адаптере, появляется диалоговое окно, в котором пользователь может изменить время для тренировки. Как только время введено, массив, содержащий объекты типа упражнение, будет обновлен. поэтому упражнение TimeTime для этого объекта упражнений внутри списка будет обновлено. Тогда список будет refre sh и отобразится новое время упражнения. Но это не тот случай. Я могу получить время на обновление. когда я впервые создаю список упражнений, полученный из файла ресурсов string. xml, время выполнения по умолчанию составляет 30 минут. но после обновления пользователя, по-прежнему отражает время. любая помощь оценена. entry_item. xml для настраиваемого адаптера
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/backroundColor">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="3dp"
android:layout_marginBottom="3dp">
<ImageView
android:id="@+id/item_icon_imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.10"
android:src="@drawable/ic_running_exercise"/>
<TextView
android:id="@+id/exercise_textview"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.40"
android:textSize="20sp"
android:textColor="@color/textColor"
android:text="Running"/>
<TextView
android:id="@+id/exercise_time_textview"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.20"
android:textSize="18sp"
android:textColor="@color/textColor"
android:text="30 min"/>
<ImageView
android:layout_gravity="center"
android:id="@+id/set_time_imagview"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.20"
android:src="@drawable/ic_timer_black_24dp"/>
<CheckBox
android:id="@+id/exercise_checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.05"
android:buttonTint="@color/textColor"/>
</LinearLayout>
</RelativeLayout>
настраиваемый адаптер
public class WorkoutAdapter extends ArrayAdapter<Exercise> {
public WorkoutAdapter(Context context, int num, ArrayList<Exercise> exerciseList) {
super(context, 0, exerciseList);
// allExercises = exerciseList;
}
@NonNull
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// Get the data item for this position
final Exercise exercise = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.entry_item, parent, false);
}
// Lookup view for data population
ImageView exerciseImageview = convertView.findViewById(R.id.item_icon_imageview);
TextView exerciseNameTextview = convertView.findViewById(R.id.exercise_textview);
TextView exerTimeTextview = convertView.findViewById(R.id.exercise_time_textview);
final ImageView setTimeImageview = convertView.findViewById(R.id.set_time_imagview);
final CheckBox exerciseCheckbox = convertView.findViewById(R.id.exercise_checkBox);
exerciseNameTextview.setText(exercise.getExerciseName());
exerciseImageview.setImageResource(exercise.getExerciseImage());
//selected exercise checkbox
exerciseCheckbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(exerciseCheckbox.isChecked()) {
exercise.setSelected(true);
}
else {
exercise.setSelected(false);
}
}
});
setTimeImageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setTimerDialogBox(position);
Toast.makeText(getContext(), position+"", Toast.LENGTH_LONG).show();
}
});
return convertView;
}
/**
* alert dialogbox for add new item to listview
*/
private void setTimerDialogBox(final int position) {
// Creating alert Dialog with one Button
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext(), R.style.dialogBox);
alertDialog.setTitle("Set Time");
final EditText input = new EditText(getContext());
alertDialog.setView(input);
alertDialog.setIcon(R.drawable.ic_timer_black_24dp1);
alertDialog.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
long time = Long.parseLong(input.getText().toString());
Workout.exerciseList.get(position).setExerciseTime(time);
notifyDataSetChanged();
Toast.makeText(getContext(),"Time added", Toast.LENGTH_SHORT).show();
}
}).create();
alertDialog.setNegativeButton("CANCEL",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}).create();
alertDialog.show();
}
}