我想问一下是否有办法将 EditText 的所有当前值从 RecyclerView Adapter 返回到 Main Activity。
更新按钮在活动中耦合,而计划列表在 RecyclerView 适配器上。用户可以更新时间表,我想在用户提交按钮时获取数组中的所有 edittext 值。
这是我的活动代码
公共类 ClinicScheduleListActivity 扩展 BaseActivity 实现 UpdateClinicListener {
@BindView(R.id.clinicScheduleToolbar)
Toolbar clinicScheduleToolbar;
@BindView(R.id.clinicScheduleRecyclerView)
RecyclerView clinicScheduleRecyclerView;
@BindView(R.id.updateClinicScheduleBt)
Button updateClinicScheduleBt;
ClinicScheduleAdapter clinicScheduleAdapter;
ClinicResult clinicResult;
ClinicPresenterImpl clinicPresenterImpl;
// UpdateScheduleModel updateScheduleModel;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.clinic_schedules_main_layout);
ButterKnife.bind(this);
// updateScheduleModel = new UpdateScheduleModel();
setUpToolbar();
clinicResult = Parcels.unwrap(getIntent().getParcelableExtra("clinic_schedules"));
setUpView();
if (clinicPresenterImpl == null) {
clinicPresenterImpl = new ClinicPresenterImpl(this);
}
}
void setUpView() {
clinicScheduleAdapter = new ClinicScheduleAdapter(this, clinicResult, this);
clinicScheduleRecyclerView.setAdapter(clinicScheduleAdapter);
clinicScheduleAdapter.notifyDataSetChanged();
Utilities.setUpRecyclerView(this, clinicScheduleRecyclerView);
}
void setUpToolbar() {
setSupportActionBar(clinicScheduleToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setTitle("Clinic Schedule");
}
}
这是我的适配器代码
public class ClinicScheduleAdapter extends RecyclerView.Adapter {
ClinicScheduleListActivity mContext;
List<ClinicSchedules> schedulesList;
private static UpdateClinicListener mCallback;
public static String day, startTime, endTime;
static boolean isOpen;
ClinicScheduleAdapterViewHolder scheduleAdapterViewHolder;
static UpdateScheduleModel updateScheduleModel = new UpdateScheduleModel();
public ClinicScheduleAdapter(ClinicScheduleListActivity context, ClinicResult clinicResult, UpdateClinicListener listener) {
mContext = context;
schedulesList = clinicResult.getSchedules();
mCallback = listener;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.clinic_schedules_item_layout, parent, false);
scheduleAdapterViewHolder = new ClinicScheduleAdapterViewHolder(view);
return scheduleAdapterViewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
scheduleAdapterViewHolder = (ClinicScheduleAdapterViewHolder) holder;
ClinicSchedules result = schedulesList.get(position);
scheduleAdapterViewHolder.scheduleSwitchButton.setChecked(result.getIsOpen() == true ? true : false);
scheduleAdapterViewHolder.dateTextView.setText(result.getDay());
scheduleAdapterViewHolder.startDateEditText.setText(Utilities.formatTime(result.getStartTime()));
scheduleAdapterViewHolder.endDateEditText.setText(Utilities.formatTime(result.getEndTime()));
updateData();
scheduleAdapterViewHolder.setIsRecyclable(true);
scheduleAdapterViewHolder.bindData();
}
void updateData() {
updateScheduleModel.setPrimaryClinic("sad");
updateScheduleModel.setSecretaryName("Test");
updateScheduleModel.setSecretaryContact("092832123");
List<ClinicSchedules> schedulesAttribute = new ArrayList<>();
for (int i = 0; i < schedulesList.size(); i++) {
ClinicSchedules schedule = new ClinicSchedules();
schedule.setId(i);
schedule.setDay(scheduleAdapterViewHolder.dateTextView.getText().toString());
schedule.setStartTime(scheduleAdapterViewHolder.startDateEditText.getText().toString());
schedule.setEndTime( scheduleAdapterViewHolder.endDateEditText.getText().toString());
schedule.setIsOpen(scheduleAdapterViewHolder.scheduleSwitchButton.isChecked() ? true : false);
schedulesAttribute.add(schedule);
}
updateScheduleModel.setSchedulesAttributes(schedulesAttribute);
Gson gson = new Gson();
String j = gson.toJson(updateScheduleModel, UpdateScheduleModel.class);
}
@Override
public int getItemCount() {
return schedulesList.size();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position;
}
public class ClinicScheduleAdapterViewHolder extends RecyclerView.ViewHolder {
LinearLayout schedLayout;
Switch scheduleSwitchButton;
TextView dateTextView;
EditText startDateEditText, endDateEditText;
public ClinicScheduleAdapterViewHolder(View v) {
super(v);
schedLayout = v.findViewById(R.id.schedLayout);
scheduleSwitchButton = v.findViewById(R.id.scheduleSwitchButton);
dateTextView = v.findViewById(R.id.dateTextView);
startDateEditText = v.findViewById(R.id.startDateEditText);
endDateEditText = v.findViewById(R.id.endDateEditText);
}
void bindData(){
mContext.updateClinicScheduleBt.setOnClickListener(v -> {
updateData();
});
}
}
}
TIA