有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在使用分页设置的适配器中更新和保存回收器视图中项目的更改数据?

我无法保存分页中适配器项的更改。。每次加载下一页数据时,都不会保存第一页项目的数据

public class PrEmpAdapter extends RecyclerView.Adapter<PrEmpAdapter.MyViewHolder> {

    public static ArrayList<Datum> employeeEnitiesArrayList;
    private final Context context;
    ArrayList<String> att_type1 = new ArrayList<String>();
    int default_value = 0;

    public PrEmpAdapter(Context context, ArrayList<Datum> binningEntities) {
        employeeEnitiesArrayList = binningEntities;
        this.context = context;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.premprecycler2, parent, false);
        return new MyViewHolder(itemView);
    }

    @SuppressLint("SetTextI18n")
    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {

        String input1 = employeeEnitiesArrayList.get(position).getDesignation();
        String upperString1 = input1.substring(0, 1).toUpperCase() + input1.substring(1).toLowerCase();
        holder.txt_designation.setText(upperString1);

        holder.add_remark.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                holder.add_remark.setVisibility(View.GONE);

                holder.lay_add_mark.setVisibility(View.VISIBLE);
            }
        });

        switch (helper.check_box_str) {
            case "check_holiday":
                employeeEnitiesArrayList.get(position).setIs_present("6");
                employeeEnitiesArrayList.get(position).setTxt_remark("Holiday");
                holder.add_remark.setVisibility(View.GONE);
                holder.lay_add_mark.setVisibility(View.VISIBLE);
                break;
            case "week_off":
                employeeEnitiesArrayList.get(position).setIs_present("9");
                employeeEnitiesArrayList.get(position).setTxt_remark("Week Off");
                holder.add_remark.setVisibility(View.GONE);
                holder.lay_add_mark.setVisibility(View.VISIBLE);
                break;
        }

        String input = employeeEnitiesArrayList.get(position).getName();
        // String upperString = input.substring(0, 1).toUpperCase() + input.substring(1).toLowerCase();
        holder.txt_name.setText(helper.inputString(input));
        holder.edt_remark.setText(employeeEnitiesArrayList.get(position).getTxt_remark());
        helper.edt_remarks_array.set(position, holder.edt_remark.getText().toString());
        holder.txt_emp_code.setText(employeeEnitiesArrayList.get(position).getEmployee_code());


        String value1 = employeeEnitiesArrayList.get(position).getIs_present();

        holder.txt_in_time.setText(helper.in_time_array.get(position));
        holder.txt_out_time.setText(helper.out_time_array.get(position));


        if (helper.is_present_array1.get(position).equals("1")) {
            holder.lay_in_time.setEnabled(false);
            holder.lay_out_time.setEnabled(false);
            holder.lay_in_time.setAlpha(0.8f);
            holder.lay_out_time.setAlpha(0.8f); }
        else {
            holder.lay_in_time.setEnabled(true);
            holder.lay_out_time.setEnabled(true);
            holder.lay_in_time.setAlpha(1);
            holder.lay_out_time.setAlpha(1); }

        Log.wtf("is_present_12", value1);


        holder.edt_remark.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                employeeEnitiesArrayList.get(position).setTxt_remark(holder.edt_remark.getText().toString());
                helper.edt_remarks_array.set(position, holder.edt_remark.getText().toString());}

            @Override
            public void afterTextChanged(Editable editable) { }
        });


        att_type1.clear();
        att_type1.add("A");
        att_type1.add("P");
        att_type1.add("L");
        att_type1.add("OD");
        att_type1.add("HD");
        att_type1.add("C/O");
        att_type1.add("H");
        att_type1.add("WFH");
        att_type1.add("LWP/LOP");
        att_type1.add("W/O");
        att_type1.add("WOP");


        int value = Integer.parseInt(employeeEnitiesArrayList.get(position).getIs_present());
        String value12 = employeeEnitiesArrayList.get(position).getIs_present();
        employeeEnitiesArrayList.get(position).setIs_present(value12);
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(context, 安卓.R.layout.simple_spinner_item, att_type1);
        dataAdapter.setDropDownViewResource(安卓.R.layout.simple_spinner_dropdown_item);
        holder.select_att_spinner.setAdapter(dataAdapter);

        Log.wtf("testing", att_type1.toString());
        if (att_type1.size() > 0) {
            for (int z = 0; z < att_type1.size(); z++) {
                if (z == value) {
                    holder.select_att_spinner.setSelection(z);

                    Log.wtf("testing", att_type1.get(z) + "=" + z);
                    helper.is_present_array1.set(position, String.valueOf(z));
                    employeeEnitiesArrayList.get(position).setIs_present(String.valueOf(z));
                } }
            Log.wtf("testing", "hello" + att_type1.toString());
            Log.wtf("spinner_arra_mini2", value + att_type1.toString()); }

        holder.lay_in_time.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                @SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
                Date date = null;
                try {
                    date = sdf.parse(holder.txt_in_time.getText().toString());

                } catch (ParseException e) {
                    e.printStackTrace();
                }
                Calendar c = Calendar.getInstance();
                c.setTime(date);

                TimePicker picker = new TimePicker(context);
                picker.setCurrentHour(c.get(Calendar.HOUR_OF_DAY));
                picker.setCurrentMinute(c.get(Calendar.MINUTE));
                int hour = c.get(Calendar.HOUR_OF_DAY);
                int minute = c.get(Calendar.MINUTE);
                TimePickerDialog mTimePicker;
                mTimePicker = new TimePickerDialog(context, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker timePicker, int hours, int mins) {
                        String time_from = "endtime";
                        String hourstr = "";
                        String minutes = "";
                        if (hours < 10)
                            hourstr = "0" + hours;
                        else
                            hourstr = String.valueOf(hours);

                        if (mins < 10)
                            minutes = "0" + mins;
                        else
                            minutes = String.valueOf(mins);

                       /*  Append in a StringBuilder*/
                        String aTime = hourstr + ':' +
                                minutes + ":" + "00";

                        holder.txt_in_time.setText(aTime);

                        helper.in_time_array.set(position, holder.txt_in_time.getText().toString());
                        Log.e("in_time_array", helper.in_time_array.toString());
                    }
                }, hour, minute, true);
                mTimePicker.setTitle("Select Time");
                mTimePicker.show();


            }
        });

        holder.lay_out_time.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                @SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
                Date date = null;
                try {
                    date = sdf.parse(holder.txt_out_time.getText().toString());

                } catch (ParseException e) {
                    e.printStackTrace();
                }
                Calendar c = Calendar.getInstance();
                c.setTime(date);

                TimePicker picker = new TimePicker(context);
                picker.setCurrentHour(c.get(Calendar.HOUR_OF_DAY));
                picker.setCurrentMinute(c.get(Calendar.MINUTE));
                int hour = c.get(Calendar.HOUR_OF_DAY);
                int minute = c.get(Calendar.MINUTE);
                TimePickerDialog mTimePicker = null;
                TimePickerDialog finalMTimePicker = mTimePicker;
                mTimePicker = new TimePickerDialog(context, new TimePickerDialog.OnTimeSetListener() {
                    @SuppressLint("SimpleDateFormat")
                    @Override
                    public void onTimeSet(TimePicker timePicker, int hours, int mins) {
                        String time_from = "endtime";
                        String s;
                        Format formatter;
                        Calendar calendar = Calendar.getInstance();
                        calendar.set(Calendar.HOUR_OF_DAY, hours);
                        calendar.set(Calendar.MINUTE, mins);
                        calendar.clear(Calendar.SECOND);

                        formatter = new SimpleDateFormat("HH:mm:ss");
                        s = formatter.format(calendar.getTime());

                        String hourstr = "";

                        String minutes = "";
                        if (hours < 10)
                            hourstr = "0" + hours;
                        else
                            hourstr = String.valueOf(hours);

                        if (mins < 10)
                            minutes = "0" + mins;
                        else
                            minutes = String.valueOf(mins);

                       /* // Append in a StringBuilder*/
                        String aTime = hourstr + ':' + minutes + ":" + "00";
                        holder.txt_out_time.setText(aTime);

                        helper.out_time_array.set(position, holder.txt_out_time.getText().toString());

                        Log.e("out_time_array", helper.out_time_array.toString());

                    }
                }, hour, minute, true);//Yes 24 hour time
                mTimePicker.setTitle("Select Time");
                mTimePicker.show();


            }
        });

        holder.select_att_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position1, long id) {
                try {
                    View v = holder.select_att_spinner.getSelectedView();
                    ((TextView) v).setTextColor(ContextCompat.getColor(context, R.color.black));
                    Log.wtf("pos", String.valueOf(holder.select_att_spinner.getSelectedItemPosition()));
                    holder.emp_type_key = holder.select_att_spinner.getSelectedItem().toString();
                    switch (holder.emp_type_key) {
                        case "P":
                            holder.emp_type_key1 = "1";
                            break;
                        case "A":
                            holder.emp_type_key1 = "0";
                            break;
                        case "L":
                            holder.emp_type_key1 = "2";
                            break;
                        case "OD":
                            holder.emp_type_key1 = "3";
                            break;
                        case "HD":
                            holder.emp_type_key1 = "4";
                            break;
                        case "C/O":
                            holder.emp_type_key1 = "5";
                            break;
                        case "H":
                            holder.emp_type_key1 = "6";
                            break;
                        case "WFH":
                            holder.emp_type_key1 = "7";
                            break;
                        case "LWP/LOP":
                            holder.emp_type_key1 = "8";
                            break;
                        case "W/O":
                            holder.emp_type_key1 = "9";
                            break;
                        case "WOP":
                            holder.emp_type_key1 = "10";
                            break;
                    }


                    if (holder.emp_type_key1.equals("1")) {
                        holder.txt_in_time.setText(employeeEnitiesArrayList.get(position).getStart_time());
                        holder.txt_out_time.setText(employeeEnitiesArrayList.get(position).getEnd_time());
                        holder.lay_in_time.setEnabled(false);
                        holder.lay_out_time.setEnabled(false);
                        holder.lay_in_time.setAlpha(0.8f);
                        holder.lay_out_time.setAlpha(0.8f);
                        helper.in_time_array.set(position, holder.txt_in_time.getText().toString());
                        helper.out_time_array.set(position, holder.txt_out_time.getText().toString());


                    } else {
                        holder.txt_in_time.setText("00:00:00");
                        holder.txt_out_time.setText("00:00:00");
                        holder.lay_in_time.setEnabled(true);
                        holder.lay_out_time.setEnabled(true);
                        holder.lay_in_time.setAlpha(1);
                        holder.lay_out_time.setAlpha(1);
                        helper.in_time_array.set(position, holder.txt_in_time.getText().toString());
                        helper.out_time_array.set(position, holder.txt_out_time.getText().toString());
                    }


                    try {
                        helper.is_present_array1.set(position, holder.emp_type_key1);
                        employeeEnitiesArrayList.get(position).setIs_present(holder.emp_type_key1);
                        String value1 = employeeEnitiesArrayList.get(position).getIs_present();

                        Log.wtf("is_present_value_1", value1);
                        Log.wtf("spinner_array_mini", holder.emp_type_key1 + holder.emp_type_key);


                    } catch (ArrayIndexOutOfBoundsException ignored) {

                    }
                    String value1 = employeeEnitiesArrayList.get(position).getIs_present();
                    Log.wtf("is_present_value", value1);


                    Log.wtf("spinner_arra_full", helper.is_present_array1.toString());
                } catch (NullPointerException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });


    }

    @Override
    public int getItemCount() {
        return employeeEnitiesArrayList.size();
    }

    public void filter(ArrayList<Datum> filteredModelList) {
        employeeEnitiesArrayList = filteredModelList;
        helper.employee_size = "";
        helper.employee_size = String.valueOf(employeeEnitiesArrayList.size());
        notifyDataSetChanged();
        if (context instanceof PRwiseActivity) {
            ((PRwiseActivity) context).checkemployeeSize();
        }
    }

    static class MyViewHolder extends RecyclerView.ViewHolder {
        TextView txt_emp_code, txt_name, txt_designation, txt_in_time, txt_out_time;
        EditText edt_remark;

        Spinner select_att_spinner;
        String time_from = "";
        String emp_type_key, emp_type_key1;

        LinearLayout lay_add_mark, lay_out_time, lay_in_time;
        ImageView add_remark;
        CheckBox att_mark;

        MyViewHolder(View view) {
            super(view);

            txt_designation = view.findViewById(R.id.txt_designation);
            select_att_spinner = view.findViewById(R.id.select_att_spinner);
            txt_name = view.findViewById(R.id.txt_name);
            txt_emp_code = view.findViewById(R.id.txt_emp_code);
            add_remark = view.findViewById(R.id.add_remark);
            lay_add_mark = view.findViewById(R.id.lay_add_mark);
            txt_in_time = view.findViewById(R.id.txt_in_time);
            txt_out_time = view.findViewById(R.id.txt_out_time);
            select_att_spinner = view.findViewById(R.id.select_att_spinner);
            edt_remark = view.findViewById(R.id.edt_remark);
            lay_in_time = view.findViewById(R.id.lay_in_time);
            lay_out_time = view.findViewById(R.id.lay_out_time);

        }

需要帮助保存更新的数据并单击按钮以数组格式发送所有数据吗


共 (0) 个答案