Android 将RecyclerView适配器中的所有Edittext值返回到主活动

Android 将RecyclerView适配器中的所有Edittext值返回到主活动,android,android-recyclerview,Android,Android Recyclerview,我想问一下,是否有办法将EditText的所有当前值从RecyclerView适配器返回到主活动 更新按钮耦合在活动中,而计划列表位于RecyclerView适配器上。用户可以更新计划,我希望在用户提交按钮时获得数组中的所有edittext值 这是我的活动代码 公共类ClinicScheduleListActivity扩展BaseActivity实现UpdateClinicListener{ @BindView(R.id.clinicScheduleToolbar) Toolba

我想问一下,是否有办法将EditText的所有当前值从RecyclerView适配器返回到主活动

更新按钮耦合在活动中,而计划列表位于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();



            });
        }


    }
}
公共类ClinicScheduleAdapter扩展了RecyclerView.Adapter{ ClinicScheduleListActivity mContext; 列表明细表; 私有静态更新liniclistener mCallback; 公共静态字符串日期、开始时间、结束时间; 静态布尔等参线; 临床医师计划适应者计划适应者计划适应者; 静态UpdateScheduleModel UpdateScheduleModel=新的UpdateScheduleModel(); 公共ClinicScheduleAdapter(ClinicScheduleListActivity上下文、ClinicResult ClinicResult、UpdateClinicListener侦听器){ mContext=上下文; schedulesList=clinicResult.getSchedules(); mCallback=侦听器; } @非空 @凌驾 public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){ 视图=布局从(mContext)展开(R.layout.clinic\u schedules\u item\u layout,parent,false); scheduleAdapterViewHolder=新的临床scheduleAdapterViewHolder(视图); 返回ScheduleAdapterViewer; } @凌驾 public void onBindViewHolder(@NonNull RecyclerView.ViewHolder,int位置){ ScheduleAdapterWiholder=(ClinicScheduleAdapterWiholder)持有者; 结果=schedulesList.get(位置); scheduleAdapterViewHolder.scheduleSwitchButton.setChecked(result.getIsOpen()==true?true:false); ScheduleAdapterViewer.dateTextView.setText(result.getDay()); scheduleAdapterViewHolder.startDateEditText.setText(Utilities.formatTime(result.getStartTime()); ScheduleAdapterViewWolder.endDateEditText.setText(Utilities.formatTime(result.getEndTime()); 更新数据(); scheduleAdapterViewHolder.setIsRecyclable(true); ScheduleAdapterViewer.bindData(); } void updateData(){ updateScheduleModel.setPrimaryClinic(“sad”); updateScheduleModel.setSecretaryName(“测试”); 更新ScheduleModel.setSecretaryContact(“092832123”); List schedulesAttribute=new ArrayList(); 对于(int i=0;i{ 更新数据(); }); } } }
TIA

您可以设置广播接收器来接收数据,也可以通过用于启动mainActivity的目的推送数据

只需从recyclerView适配器抓取数据,将数据推送到意图中,然后使用任意一种方法将意图推送到您的活动中 sendBroadcast(意向)或startActivity(意向数据)


如果尚未关闭活动的onNewIntent方法,则可能需要覆盖它

OnEditTextChanged接口

public interface OnEditTextChanged {
    void onTextChanged(int position, String charSeq);
}
然后您还需要将其包含在适配器的构造函数中

在Adapter.java中

private List<DataHolder> mDataSet;
private OnEditTextChanged onEditTextChanged;

public Adapter(List<DataHolder> myData, OnEditTextChanged onEditTextChanged) {
    mDataSet = myData;
    this.onEditTextChanged = onEditTextChanged;
}
并像这样在活动中调用适配器

mAdapter = new Adapter(holderList, new OnEditTextChanged() {
        @Override
        public void onTextChanged(int position, String charSeq) {
            //change list data of particular position
        }
    }); 

检查此项-&您能在此处解释当前值的含义吗?请发布您的活动和适配器代码HI Kam1234,我的意思是,一旦用户更新了edittext值。例如,用户将周一的开放时间更改为上午10:00,那么我将获得周一到周日所有edittext的当前值。您能添加适配器和活动代码吗你的问题问了很久了?
mAdapter = new Adapter(holderList, new OnEditTextChanged() {
        @Override
        public void onTextChanged(int position, String charSeq) {
            //change list data of particular position
        }
    });