Android 正在尝试从RecyclerView(片段)的EditText保存数组中TextView行中的数据

Android 正在尝试从RecyclerView(片段)的EditText保存数组中TextView行中的数据,android,android-fragments,android-edittext,android-recyclerview,android-sharedpreferences,Android,Android Fragments,Android Edittext,Android Recyclerview,Android Sharedpreferences,我是Android的新手,在这里尝试解决两个问题 我有一个使用传统库(RecycleServiceEnhanced)的recyclerview片段,它提供了3个按钮(添加、编辑、删除) 第一个问题: public class RowModel { private String mainText, subText, id; public RowModel(String mainText, String subText) { this.mainText = mainText; th

我是Android的新手,在这里尝试解决两个问题

我有一个使用传统库(RecycleServiceEnhanced)的recyclerview片段,它提供了3个按钮(添加、编辑、删除)

第一个问题:

public class RowModel {
private String mainText, subText, id;

public RowModel(String mainText, String subText) {
    this.mainText = mainText;
    this.subText = subText;
    this.id = String.valueOf((new Date()).getTime());
}

private RowModel() {
}

public String getMainText() {
    return mainText;
}

public void setMainText(String mainText) {
    this.mainText = mainText;
}

public String getSubText() {
    return subText;
}

public void setSubText(String subText) {
    this.subText = subText;
}


@Override
public String toString() {
    return mainText + ";" + subText;
}

public String getId() {
    return id;
}

private void setId(String id) {
    this.id = id;
}

public static RowModel newInstance(String id, String data) {
    RowModel rowModel = new RowModel();
    rowModel.setId(id);
    String[] arr = data.split(";");
    rowModel.setMainText(arr[0]);
    rowModel.setSubText(arr[1]);
    return rowModel;
}
}
我需要删除列表中的行(onclick delete),当我返回到这个片段时,这一行不应该再存在了。现在我了解了如何使用浮动按钮将其保存在SharedReferences中,但不能通过单击按钮del将其从列表中永久删除

第二个问题: 对于每一行,我都有一个带有edit_name和edit_description的alertdialog,我需要将每一行的数据传递并保存到每一行的textview(mainText和saveText)

我的代码:

片段

public class MainPersonTrainFragment_recycler_v_edit extends Fragment implements RecyclerTouchListener.RecyclerTouchListenerHelper, View.OnClickListener {
private AlertDialog.Builder alertDialog;
private EditText et_personal_trainings_name;
RecyclerView mRecyclerView;
private TextView name_personal_training;
private TextView descript_personal_training;
MainAdapter mAdapter;
String[] dialogItems;
List<Integer> unclickableRows, unswipeableRows;
private EditText et_personal_trainings_description;
private boolean add = false;
private int edit_position;
private int openOptionsPosition;
private OnActivityTouchListener touchListener;
private RecyclerTouchListener onTouchListener;
private Paint p = new Paint();

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    SharedPreferences trainings = PreferenceManager.getDefaultSharedPreferences(getActivity());
    View view = inflater.inflate(R.layout.workout_personal_trainings, container, false);
    return view;


}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    mRecyclerView.addOnItemTouchListener(onTouchListener);
    super.onActivityCreated(savedInstanceState);

}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    FloatingActionButton fab = (FloatingActionButton) getActivity().findViewById(R.id.fab_personal_trainings);
    fab.setOnClickListener(this);
    name_personal_training = (TextView) getActivity().findViewById(R.id.mainText);
    descript_personal_training = (TextView) getActivity().findViewById(R.id.subText);
    mRecyclerView = (RecyclerView) getActivity().findViewById(R.id.card_recycler_view);
    mAdapter = new MainAdapter(getActivity(), getData());
    mRecyclerView.setAdapter(mAdapter);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    onTouchListener = new RecyclerTouchListener(getActivity(), mRecyclerView);
    onTouchListener
            .setIndependentViews(R.id.rowButton)
            .setViewsToFade(R.id.rowButton)
            .setClickable(new RecyclerTouchListener.OnRowClickListener() {
                @Override
                public void onRowClicked(int position) {
                    ToastUtil.makeToast(getActivity().getApplicationContext(), "Row " + (position + 1) + " clicked!");
                }

                @Override
                public void onIndependentViewClicked(int independentViewID, int position) {
                    ToastUtil.makeToast(getActivity().getApplicationContext(), "Button in row " + (position + 1) + " clicked!");
                    FragmentManager fragmentManager = getFragmentManager();
                    Fragment fragment = getFragmentManager().findFragmentById(R.id.container_main);
                    RowModel rowModel = mAdapter.modelList.get(position);
                    fragment = PersonalTrainigCardFragment.newInstance(rowModel.getMainText());
                    fragmentManager.beginTransaction().replace(R.id.container_main, fragment).addToBackStack("REPLACE_TO_PROFILE").commit();

                }
            })
            .setLongClickable(true, new RecyclerTouchListener.OnRowLongClickListener() {
                @Override
                public void onRowLongClicked(int position) {
                    ToastUtil.makeToast(getActivity().getApplicationContext(), "Row " + (position + 1) + " long clicked!");
                }
            })
            .setSwipeOptionViews(R.id.add, R.id.edit, R.id.change)
            .setSwipeable(R.id.rowFG, R.id.rowBG, new RecyclerTouchListener.OnSwipeOptionsClickListener() {
                @Override
                public void onSwipeOptionClicked(int viewID, int position) {
                    String message = "";
                    if (viewID == R.id.add) {
                        message += "Add Exercises";
                    } else if (viewID == R.id.edit) {
                        message += "Edit Name and Description";
                        alertDialog();
                    } else if (viewID == R.id.change) {
                        message += "Delete Training";
                        SharedPreferences sPref = getActivity().getSharedPreferences("TRAINING", Context.MODE_PRIVATE);
                        SharedPreferences.Editor editor = sPref.edit();
                        editor.remove("TRAINING");
                        editor.commit();
                        removeItem(position);
                    }
                    message += " clicked for row " + (position + 1);
                    ToastUtil.makeToast(getActivity().getApplicationContext(), message);
                }
            });
    super.onViewCreated(view, savedInstanceState);
}


private List<RowModel> getData() {
    List<RowModel> list = new ArrayList<>(1);
//        for (int i = 0; i < 1; i++) {
//            list.add(new RowModel("My personal training " + (i + 1), "Description... "));
//        }

    SharedPreferences sPref = getActivity().getSharedPreferences("TRAINING", Context.MODE_PRIVATE);
    Map<String, ?> allTraining = sPref.getAll();
    for (Map.Entry entry : allTraining.entrySet()) {
        RowModel rowModel = RowModel.newInstance(String.valueOf(entry.getKey()), String.valueOf(entry.getValue()));
        list.add(rowModel);
    }
    return list;

}


@Override
public void setOnActivityTouchListener(OnActivityTouchListener listener) {
    this.touchListener = listener;
}


private class MainAdapter extends RecyclerView.Adapter<MainAdapter.MainViewHolder> {
    LayoutInflater inflater;
    List<RowModel> modelList;

    public MainAdapter(Context context, List<RowModel> list) {
        inflater = LayoutInflater.from(context);
        modelList = new ArrayList<>(list);
    }


    @Override
    public MainViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.row_personal_training, parent, false);
        return new MainViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MainViewHolder holder, int position) {
        holder.bindData(modelList.get(position));

    }

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

    public void addDescript(RowModel subText) {
        modelList.add(subText);
        notifyItemInserted(modelList.size());

    }


    class MainViewHolder extends RecyclerView.ViewHolder {

        TextView mainText, subText;

        public MainViewHolder(View itemView) {
            super(itemView);
            mainText = (TextView) itemView.findViewById(R.id.mainText);
            subText = (TextView) itemView.findViewById(R.id.subText);
        }


        public void bindData(RowModel rowModel) {
            mainText.setText(rowModel.getMainText());
            subText.setText(rowModel.getSubText());
        }


    }
}


@Override
public void onClick(View v) {
    switch (v.getId()) {

        case R.id.fab_personal_trainings:
            for (int i = 0; i < 1; i++) {

                RowModel rowModel = new RowModel("My personal training " + (mAdapter.modelList.size() + 1), "Description... ");
                mAdapter.modelList.add(rowModel);
                mAdapter.notifyDataSetChanged();
                SharedPreferences sPref = getActivity().getSharedPreferences("TRAINING", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sPref.edit();
                editor.putString(rowModel.getId(), rowModel.toString());
                editor.commit();

            }
        case R.id.change:


    }
}

public void removeItem(int position) {

    mAdapter.modelList.remove(position);
    mAdapter.notifyItemRemoved(position);
    mAdapter.notifyItemRangeChanged(position, mAdapter.modelList.size());
    RowModel rowModel = new RowModel("My personal training " + (mAdapter.modelList.size() + 1), "Description... ");
    mAdapter.modelList.remove(rowModel);
    mAdapter.notifyDataSetChanged();

}

private void alertDialog() {


    alertDialog = new AlertDialog.Builder(this.getContext());
    final View view = getActivity().getLayoutInflater().inflate(R.layout.alertdialog_personal_training_name_description, null);
    et_personal_trainings_name = (EditText) view.findViewById(R.id.name_of_training_alert_d);
    et_personal_trainings_description = (EditText) getView().findViewById(R.id.description_of_training_alert_d);
    name_personal_training = (TextView) getView().findViewById(R.id.mainText);
    descript_personal_training = (TextView) getView().findViewById(R.id.subText);
    alertDialog.setMessage("Edit Training info");
    alertDialog.setView(view);
    //In case it gives you an error for setView(View) try
    alertDialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            String message = null;

            if (et_personal_trainings_name.length() < 1) {
                ToastUtil.makeToast(getActivity().getApplicationContext(), message);


                return;
            } else {
                //    name_personal_training.setText( et_personal_trainings_name.getText());
                ToastUtil.makeToast(getView().getContext(), et_personal_trainings_name.getText().toString());
                message += et_personal_trainings_name.getText().toString();
                dialog.dismiss();

            }
        }


    });

    alertDialog.show();
}
期待任何帮助。谢谢