我正在使用回收站视图,并根据用户的要求以编程方式添加项目 . 当我在我的设备上安装应用程序时,会显示以编程方式添加的项目 . 但是当我杀死应用程序并再次打开它时,以编程方式添加的项目不会显示 . 我保留了一个项目的arraylist,最初包含3个项目 . 应用程序被杀后,不会保留对llistt的任何进一步添加 . 任何帮助表示赞赏 . 请帮忙!

我附加了包含recycler视图的适配器类和片段类 .

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

List<MyItem> items;
private LayoutInflater inflater;
private Context context;
public MyAdapter(Context context, List<MyItem> items){

   this.items = items;
   this.context = context;
   inflater = LayoutInflater.from(context);
   }

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View view = inflater.inflate(R.layout.item_my_list, parent, false);
    MyViewHolder myHolder= new MyViewHolder(view);
    return myHolder;
}

@Override
public void onBindViewHolder(MyAdapter.MyViewHolder holder, int position)     {

    MyItem item = items.get(position);
    holder.name.setText(item.get_Name());
    holder.number.setText(item.get_Number());
}

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

public void delete(int position) {
    items.remove(position);
    notifyItemRemoved(position);
}

public void add(MyItem item, int position){
    items.add(position, item);
    notifyItemInserted(position);
    notifyItemRangeChanged(0, getItemCount());
}

class MyViewHolder extends RecyclerView.ViewHolder{
    TextView number, name;
    public MyViewHolder(View itemView){

        super(itemView);
        number =(TextView) itemView.findViewById(R.id.number);
        name = (TextView) itemView.findViewById(R.id.name);
     }
}

}

这是我的片段类:

public class RecyclerViewFragment extends Fragment {

RecyclerView myRecyclerView;
 RecyclerView.Adapter adapter;
TextView addItem;
TextView nameText, numberText;
private static List<MyItem> items;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_recycler_view, container, false);
    myRecyclerView = (RecyclerView) view.findViewById(R.id.my_list);

adapter = new MyAdapter(getActivity(), getData());

Log.i("DATA ITEMS", getData().get(0).get_contactName());
    Log.i("DATA ITEMS", getData().get(0).get_contactName());
    Log.i("DATA ITEMS", getData().get(0).get_contactName());

addItem = (TextView) view.findViewById(R.id.add_new_item);
    myRecyclerView.setAdapter(adapter);
    myRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    myRecyclerView.addOnItemTouchListener(new RecyclerViewTouchListener(getActivity(), myRecyclerView, new ClickListener() {
        @Override
        public void onClick(View view, int position) {

            Log.i("MY INFO", "item of recycler view clicked" + position);

        }

        @Override
        public void onLongClick(View view, int position) {

        }
    }));

    addItem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            addNewItem();
        }
    });

    return view;
}

public static List<MyItem> getData(){

    items = new ArrayList<>();
    items.add(new MyItem("7341973", "xyzabc"));
    items.add(new MyItem("86218", "qwerty"));
    items.add(new MyItem("178581", "bnmlkjh"));

    return items;
}


public void addNewItem(){


    LayoutInflater li = LayoutInflater.from(this.getActivity());
    View view = li.inflate(R.layout.dialog_add_item, null);

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this.getActivity());
    alertDialogBuilder.setView(view);

    nameText = (TextView) view.findViewById(R.id.new_name);
    numberText = (TextView) view.findViewById(R.id.new_number);


    alertDialogBuilder
            .setCancelable(false)
            .setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    })
            .setPositiveButton("Add", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                    if(numberText.getText() != null && nameText.getText() != null){
                        MyItem item = new MyItem(numberText.getText().toString(), nameText.getText().toString());
                        ((MyAdapter) adapter).add(item, 0);
        }
        else
            Toast.makeText(getActivity(), "Add name and number", Toast.LENGTH_SHORT).show();
                }
            });

    AlertDialog dialog = alertDialogBuilder.create();

    dialog.show();
}

public interface ClickListener{
    void onClick(View view, int position);
    void onLongClick(View view, int position);
}

static class RecyclerViewTouchListener implements RecyclerView.OnItemTouchListener{
    private GestureDetector detector;
    private ClickListener listener;

    public RecyclerViewTouchListener (Context context, final  RecyclerView recyclerView, final ClickListener clickListener){
        this.listener = clickListener;
        detector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener(){
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }

            @Override
            public void onLongPress(MotionEvent e) {
                View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
                if (child != null && clickListener != null) {
                    clickListener.onLongClick(child, recyclerView.getChildAdapterPosition(child));
                }
            }
        });
    }

    @Override
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
        View child = rv.findChildViewUnder(e.getX(), e.getY());
        if (child != null && listener != null && detector.onTouchEvent(e)) {
            listener.onClick(child, rv.getChildAdapterPosition(child));
        }
        return false;
    }

    @Override
    public void onTouchEvent(RecyclerView rv, MotionEvent e) {

    }

    @Override
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

    }
}

}