Android RecyclerView适配器列表<;E>;得到0

Android RecyclerView适配器列表<;E>;得到0,android,android-recyclerview,drag-and-drop,Android,Android Recyclerview,Drag And Drop,我是android开发的新手。我遇到了一个问题,我创建了一个简单的应用程序,其中我在MainActivity中有RecyclerView。我尝试拖放位置。但当我从MainActivity移动到CompleteList_activity,再次移动到MainActivity并尝试拖放时,我得到了ArrayOutOfBound错误,因为列表值为0 public void positionchange(int-fromPosition,int-toPosition)方法 主要活动: package co

我是android开发的新手。我遇到了一个问题,我创建了一个简单的应用程序,其中我在MainActivity中有RecyclerView。我尝试拖放位置。但当我从MainActivity移动到CompleteList_activity,再次移动到MainActivity并尝试拖放时,我得到了ArrayOutOfBound错误,因为列表值为0 public void positionchange(int-fromPosition,int-toPosition)方法

主要活动:

package com.example.marmeto.todolist;

import android.content.Intent;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    DBHelper db;

    ImageButton btn_addtodolist,btn_completelist;
    List<Model> todolist = new ArrayList<>();
    List<Model> adapterList = new ArrayList<>();
    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private ToDoList_Adapter adapter;
    public static final int NEW_WORD_ACTIVITY_REQUEST_CODE = 1;
    Model mToDOItemList = new Model();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        db = new DBHelper(this);

        recyclerView = (RecyclerView)findViewById(R.id.recyclerview);
        recyclerView.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(getApplicationContext());
        recyclerView.setLayoutManager(layoutManager);

        btn_addtodolist = (ImageButton) findViewById(R.id.btn_addtodolist);
        btn_completelist = (ImageButton)findViewById(R.id.btn_completedlist);
        btn_addtodolist.setOnClickListener(this);

        btn_completelist.setOnClickListener(this);

        getValue();
    }
    void getValue(){
        todolist.clear();

        todolist = db.getUserDetail();

        Collections.sort(todolist, new Comparator<Model>() {
            @Override public int compare(Model p1, Model p2) {
                return p1.getPosition()- p2.getPosition(); // Ascending
            }
        });
        adapter = new ToDoList_Adapter(todolist,getApplicationContext());

        ItemTouchHelper.SimpleCallback callback=new SwipItem(adapter);
        ItemTouchHelper helper=new ItemTouchHelper(callback);
        helper.attachToRecyclerView(recyclerView);

        recyclerView.setAdapter(adapter);
        adapter.notifyDataSetChanged();
    }



    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    public void onClick(View v) {


        if (v.getId() == R.id.btn_addtodolist) {
            Intent intent = new Intent(getApplicationContext(), AddToDoList_Activity.class);
            startActivity(intent);

        } else {
            Intent intent = new Intent(getApplicationContext(),CompletedActivity.class);
            startActivity(intent);

        }
    }
    }
package com.example.marmeto.todolist;
导入android.content.Intent;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentTransaction;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.support.v7.widget.helper.ItemTouchHelper;
导入android.view.view;
导入android.widget.ImageButton;
导入android.widget.Toast;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Comparator;
导入java.util.List;
公共类MainActivity扩展AppCompatActivity实现View.OnClickListener{
dbdb;
图像按钮btn_添加到列表,btn_完成列表;
List todolist=new ArrayList();
List adapterList=新建ArrayList();
私人回收站;
private RecyclerView.LayoutManager LayoutManager;
私有ToDoList_适配器;
公共静态最终int NEW\u WORD\u ACTIVITY\u REQUEST\u CODE=1;
模型mToDOItemList=新模型();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db=新的DBHelper(此);
recyclerView=(recyclerView)findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
layoutManager=新的LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
btn_addtodolist=(ImageButton)findViewById(R.id.btn_addtodolist);
btn_completelist=(ImageButton)findViewById(R.id.btn_completelist);
btn_addtodolist.setOnClickListener(此);
btn_completelist.setOnClickListener(此);
getValue();
}
void getValue(){
todolist.clear();
todolist=db.getUserDetail();
Collections.sort(todolist,newcomparator(){
@覆盖公共整数比较(p1型、p2型){
返回p1.getPosition()-p2.getPosition();//升序
}
});
adapter=newtodolist_适配器(ToDoList,getApplicationContext());
ItemTouchHelper.SimpleCallback回调=新的SwipItem(适配器);
ItemTouchHelper=新的ItemTouchHelper(回调);
helper.attachToRecyclerView(recyclerView);
recyclerView.setAdapter(适配器);
adapter.notifyDataSetChanged();
}
@凌驾
受保护的void onResume(){
super.onResume();
}
@凌驾
受保护的void onPause(){
super.onPause();
}
@凌驾
公共void onClick(视图v){
if(v.getId()==R.id.btn\u addtodolist){
Intent Intent=new Intent(getApplicationContext(),AddToDoList\u Activity.class);
星触觉(意向);
}否则{
Intent Intent=新的Intent(getApplicationContext(),CompletedActivity.class);
星触觉(意向);
}
}
}
适配器类:

    package com.example.marmeto.todolist;
    import android.content.Context;
    import android.support.annotation.NonNull;
    import android.support.v7.widget.RecyclerView;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    import java.util.Collections;import java.util.List;

       public class ToDoList_Adapter extends             RecyclerView.Adapter<ToDoList_Adapter.ViewHolder> {

    List<Model> items;
    private Context context;

    public ToDoList_Adapter(List<Model> items, Context context) {
        this.items = items;
        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.todolist_adapter, parent, false);
        ViewHolder viewHolder = new ViewHolder(v);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {

        final Model itemlist = items.get(position);
        holder.todoText.setText(itemlist.getPosition()+" "+itemlist.getTitle());
    }


    @Override
    public int getItemCount() {
        return items.size();
    }
    public void positionchange(int fromPosition, int toPosition)
    {

        try {
        Collections.swap(items,fromPosition,toPosition);

        DBHelper db = new DBHelper(context);
        db.updateList(items);
         }catch (Exception e)
         {
             e.printStackTrace();
         }
        this.notifyItemMoved(fromPosition,toPosition);


    }

    public void deletePlanet(int pos)
    {
        //GET ID
        try {
            Model p = items.get(pos);
            int id = p.getId();

            //DELETE FROM DB
            DBHelper db = new DBHelper(context);

            if (db.delete(id)) {
                items.remove(pos);
                db.updateList(items);

            } else {
                Toast.makeText(context, "Unable To Delete", Toast.LENGTH_SHORT).show();
            }
            this.notifyItemRemoved(pos);
        }catch (Exception e){
            e.printStackTrace();
        }




    }
    class ViewHolder extends RecyclerView.ViewHolder {

        public TextView todoText;
        public Button btn_done;
        public ViewHolder(final View itemView) {
            super(itemView);

            todoText = (TextView)itemView.findViewById(R.id.todoItem_text);
            btn_done = (Button)itemView.findViewById(R.id.btn_done);
            btn_done.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    DBHelper db = new DBHelper(context);
                    try {
                        Model p = items.get(getAdapterPosition());
                        db.updateData(p.getId());
                        items.remove(getAdapterPosition());

                        db.updateList(items);
                    }catch (Exception e){
                        e.printStackTrace();
                    }

                    notifyItemRemoved(getAdapterPosition());
                }
            });
        }
    }
}
package com.example.marmeto.todolist;
导入android.content.Context;
导入android.support.annotation.NonNull;
导入android.support.v7.widget.RecyclerView;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.util.Collections;导入java.util.List;
公共类ToDoList_适配器扩展了RecyclerView.Adapter{
清单项目;
私人语境;
公共ToDoList_适配器(列表项、上下文){
这个项目=项目;
this.context=上下文;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext())
.充气(R.layout.todolist_适配器,父级,错误);
视窗夹持器视窗夹持器=新视窗夹持器(v);
返回视图持有者;
}
@凌驾
公共无效onBindViewHolder(ViewHolder,最终int位置){
最终模型itemlist=items.get(位置);
holder.todoText.setText(itemlist.getPosition()+“”+itemlist.getTitle());
}
@凌驾
public int getItemCount(){
返回items.size();
}
公共无效位置更改(int-fromPosition、int-toPosition)
{
试一试{
集合。交换(项目、起始位置、位置);
DBHelper db=新的DBHelper(上下文);
数据库更新列表(项目);
}捕获(例外e)
{
e、 printStackTrace();
}
此.notifyItemMoved(从位置、位置);
}
公共区域(内部位置)
{
//取得身份证
试一试{
模型p=项目获取(pos);
int id=p.getId();
//从数据库中删除
DBHelper db=新的DBHelper(上下文);
如果(数据库删除(id)){
项目。移除(pos);
数据库更新列表(项目);
}否则{
Toast.makeText(上下文,“无法删除”,Toast.LENGTH_SHORT.show();
}
此项已删除(pos);
}捕获(例外e){
e、 printStackTrace();
}
}
类ViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图到文本;
公共按钮btn_完成;
公共视图持有者(最终视图项视图){
超级(项目视图);
todoText=(TextView)itemView.findViewBy