Android java.lang.ArrayIndexOutOfBoundsException:长度=12;recyclerview适配器中的索引=-1

Android java.lang.ArrayIndexOutOfBoundsException:长度=12;recyclerview适配器中的索引=-1,android,indexoutofboundsexception,android-recyclerview,Android,Indexoutofboundsexception,Android Recyclerview,我使用的是回收者视图。 这是适配器 public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<Contact> myContacts; private Activity activity; public MyAdapter(List<Contact> contacts,Activity activity) { this.myCont

我使用的是回收者视图。 这是适配器

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<Contact> myContacts;
private Activity activity;

public MyAdapter(List<Contact> contacts,Activity activity)
{
    this.myContacts = contacts;
    this.activity = activity;
}


public class ViewHolder extends RecyclerView.ViewHolder {
    public TextView mTextView;
    public ImageView mColorView;
    public LinearLayout linearLayout;
    public ViewHolder(View v,MyAdapter adapter) {
        super(v);
        mTextView =  v.findViewById(R.id.name);
        mColorView = v.findViewById(R.id.image);
        linearLayout = v.findViewById(R.id.listItemLinearLayout);
        v.setOnLongClickListener(onLongClickListener(myContacts.get(getAdapterPosition()).getID(),getAdapterPosition(),adapter));
    }
}

@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                               int viewType) {
    // create a new view
    View v = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.my_text_view, parent, false);
    // set the view's size, margins, paddings and layout parameters
    ViewHolder vh = new ViewHolder(v,this);
    return vh;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    String name = myContacts.get(position).getName();
    TextDrawable myDrawable = TextDrawable.builder().beginConfig()
            .textColor(Color.WHITE)
            .useFont(Typeface.DEFAULT)
            .toUpperCase()
            .endConfig()
            .buildRound(name.substring(0,1),myContacts.get(position).getColor());

    holder.mColorView.setImageDrawable(myDrawable);
    holder.mTextView.setText(myContacts.get(position).getName());
    holder.linearLayout.setBackgroundColor(Color.DKGRAY);

}

private View.OnLongClickListener onLongClickListener(final long position, final int pos,final MyAdapter adapter){
    return new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(activity, R.style.MyDialogTheme);
            alertDialog.setCancelable(false);
            alertDialog.setMessage("Delete item?");
            alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    LockedContacts.deleteTitle(position,activity);
                    myContacts.remove(pos);
                    notifyItemRemoved(pos);
                    notifyItemRangeChanged(pos, myContacts.size());
                }
            });
            alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();

                }
            });
            AlertDialog alert11 = alertDialog.create();
            alert11.show();

            return true;
        }
    };
}


@Override
public int getItemCount() {
    Log.d("SIZE",String.valueOf(myContacts.size()));
    return myContacts.size();
}}
公共类MyAdapter扩展了RecyclerView.Adapter{ 私人清单; 私人活动; 公共MyAdapter(列出联系人、活动) { this.myContacts=联系人; 这个。活动=活动; } 公共类ViewHolder扩展了RecyclerView.ViewHolder{ 公共文本视图mTextView; 公共图像视图mColorView; 公共线性布局线性布局; 公共视图持有者(视图v,MyAdapter适配器){ 超级(五); mTextView=v.findviewbyd(R.id.name); mColorView=v.findviewbyd(R.id.image); linearLayout=v.findViewById(R.id.listItemLinearLayout); v、 setOnLongClickListener(onLongClickListener(myContacts.get(getAdapterPosition()).getID(),getAdapterPosition(),adapter)); } } @凌驾 public MyAdapter.ViewHolder onCreateViewHolder(视图组父级, int视图类型){ //创建新视图 视图v=LayoutInflater.from(parent.getContext()) .充气(R.layout.my_text_视图,父视图,false); //设置视图的大小、边距、填充和布局参数 ViewHolder vh=新的ViewHolder(v,this); 返回vh; } @凌驾 公共无效onBindViewHolder(ViewHolder,int位置){ String name=myContacts.get(position.getName(); TextDrawable myDrawable=TextDrawable.builder().beginConfig() .textColor(颜色.白色) .useFont(Typeface.DEFAULT) .toUpperCase() .endConfig() .buildRound(name.substring(0,1),myContacts.get(position.getColor()); 持有者.mColorView.setImageDrawable(myDrawable); holder.mTextView.setText(myContacts.get(position.getName()); 支架。线性布局。立根基色(颜色:DK灰色); } private View.OnLongClickListener OnLongClickListener(最终长位置、最终整型位置、最终MyAdapter适配器){ 返回新视图。OnLongClickListener(){ @凌驾 仅长按公共布尔值(视图v){ AlertDialog.Builder AlertDialog=新建AlertDialog.Builder(活动,R.style.MyDialogTheme); alertDialog.setCancelable(假); alertDialog.setMessage(“删除项?”); alertDialog.setPositiveButton(“是”,新的DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog,int which){ 锁定联系人。删除标题(职位、活动); myContacts.remove(位置); 已删除的项目(pos); notifyItemRangeChanged(pos,myContacts.size()); } }); alertDialog.setNegativeButton(“取消”,新建DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog,int which){ dialog.cancel(); } }); AlertDialog alert11=AlertDialog.create(); alert11.show(); 返回true; } }; } @凌驾 public int getItemCount(){ Log.d(“SIZE”,String.valueOf(myContacts.SIZE()); 返回myContacts.size(); }} 我得到IndexOutofBoundException,尽管我没有在列表中插入任何项目

以下是错误:

Process: com.example.ark.AccessibilityService, PID: 17104                                                                                  
java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
at java.util.ArrayList.get(ArrayList.java:310)
at com.example.ark.access.MyAdapter$ViewHolder.<init>(MyAdapter.java:46)
at com.example.ark.access.MyAdapter.onCreateViewHolder(MyAdapter.java:57)
at com.example.ark.access.MyAdapter.onCreateViewHolder(MyAdapter.java:27)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6493)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5680)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5563)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5559)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2229)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1556)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1516)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:608)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3693)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3410)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3962)
at android.view.View.layout(View.java:16668)
at android.view.ViewGroup.layout(ViewGroup.java:5443)
at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:132)
at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1361)
at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:869)
at android.view.View.layout(View.java:16668)
at android.view.ViewGroup.layout(ViewGroup.java:5443)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16668)
at android.view.ViewGroup.layout(ViewGroup.java:5443)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16668)
at android.view.ViewGroup.layout(ViewGroup.java:5443)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16668)
at android.view.ViewGroup.layout(ViewGroup.java:5443)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16668)
at android.view.ViewGroup.layout(ViewGroup.java:5443)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16668)
at android.view.ViewGroup.layout(ViewGroup.java:5443)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2733)
at android.view.View.layout(View.java:16668)
at android.view.ViewGroup.layout(ViewGroup.java:5443)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6042)
android.view.Choreographer$CallbackReco
Process:com.example.ark.AccessibilityService,PID:17104
java.lang.ArrayIndexOutOfBoundsException:长度=12;索引=-1
获取(ArrayList.java:310)
在com.example.ark.access.MyAdapter$ViewHolder上。(MyAdapter.java:46)
位于com.example.ark.access.MyAdapter.onCreateViewHolder(MyAdapter.java:57)
位于com.example.ark.access.MyAdapter.onCreateViewHolder(MyAdapter.java:27)
位于android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6493)
在android.support.v7.widget.RecyclerView$Recycler.TryGetViewHolderFormationByDaildate(RecyclerView.java:5680)上
位于android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5563)
位于android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5559)
位于android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2229)
位于android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1556)
位于android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1516)
位于android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:608)
位于android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3693)
位于android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3410)
位于android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3962)
在android.view.view.layout(view.java:16668)
位于android.view.ViewGroup.layout(ViewGroup.java:5443)
位于android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:132)
位于android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
位于android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1361)
位于android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:869)
在android.view.view.layout(view.java:16668)
位于android.view.ViewGroup.layout(ViewGroup.java:5443)
位于android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
位于android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
位于android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
在android.view.view.layout(view.java:16668)
位于android.view.ViewGroup.layout(ViewGroup.java:5443)
位于android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
位于android.widget.FrameLayout.onLayout(FrameLayout.java:273)
在android.view.view.layout(view.java:16668)
位于android.view.ViewGroup.layout(ViewGroup.java:5443)
在android.widget.LinearLayout.setChildFrame(LinearLay
v.setOnLongClickListener(onLongClickListener(myContacts.get(getAdapterPosition()).getID(),getAdapterPosition(),adapter));
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener {
    public TextView mTextView;
    public ImageView mColorView;
    public LinearLayout linearLayout;
    public ViewHolder(View v,MyAdapter adapter) {
        super(v);
        mTextView =  v.findViewById(R.id.name);
        mColorView = v.findViewById(R.id.image);
        linearLayout = v.findViewById(R.id.listItemLinearLayout);
        v.setOnLongClickListener(this);
    }
    @Override
    public boolean onLongClick(View v) {
        if(getAdapterPosition()!=-1) {
            // Do your stuff here
            onLongClickListener(myContacts.get(getAdapterPosition()).getID(), getAdapterPosition(), adapter)
        }
        return false;
    }
}