首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.IndexOutOfBoundsException:无效索引6,列表中大小为6

java.lang.IndexOutOfBoundsException:无效索引6,列表中大小为6
EN

Stack Overflow用户
提问于 2016-07-20 07:14:45
回答 1查看 1.9K关注 0票数 0

当我试图删除任何有错误的IndexoutofBound错误时,都有删除的图像视图。

我无法从其他答案中解决问题。

在setText方法中生成的异常。

代码语言:javascript
复制
private List<String> ids = new ArrayList<>();
private List<String> names = new ArrayList<>();
private List<String> vehicleno = new ArrayList<>();
private List<String> types = new ArrayList<>();
private Activity context;
private Context cxt;
private String vehicleText;
private static MyClickListener myClickListener;


public CustomList(Activity context, String[] ids, String[] types, String[] names, String[] vehicleno) {
    super(context, R.layout.list_item, ids);
    this.ids.addAll(Arrays.asList(ids));
    this.types.addAll(Arrays.asList(types));
    this.context = context;
    this.names.addAll(Arrays.asList(names));
    this.vehicleno.addAll(Arrays.asList(vehicleno));
}

public void exitListItem(final int position){
    StringRequest stringRequest = new StringRequest(Request.Method.POST, EXIT_VISITOR_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    ids.remove(position);
                    types.remove(position);
                    names.remove(position);
                    vehicleno.remove(position);
                    notifyDataSetChanged();
                    Toast.makeText(context,"Exit Successfully",Toast.LENGTH_LONG).show();
                    Log.i("Logg",response);
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.i("Log",error.toString());
                    if (error.networkResponse == null) {
                        if (error.getClass().equals(TimeoutError.class)) {
                            // Show timeout error message
                            Toast.makeText(getContext(), "Oops. Timeout error!", Toast.LENGTH_LONG).show();
                        }
                    }
                }
            }) {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            params.put(KEY_TYPE_OF_VISITOR, textType);
            params.put(KEY_VEHICLE_NUMBER,textVehicleNo);
            return params;
        }
    };
    stringRequest.setRetryPolicy(new DefaultRetryPolicy(
            5000,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    RequestQueue requestQueue = Volley.newRequestQueue(context);
    requestQueue.add(stringRequest);

}

@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
    View view = convertView;
    Holder holder = null;
    if (view == null) {
        LayoutInflater inflater = context.getLayoutInflater();
        view = inflater.inflate(R.layout.list_item, parent, false);

        holder = new Holder();
        holder.txtName = (TextView) view.findViewById(R.id.txt_exit_name);
        holder.txtType = (TextView) view.findViewById(R.id.txt_exit_type);
        holder.txtVehicleNo = (TextView) view.findViewById(R.id.txt_exit_vehicle_num);
        holder.imgBtnImg = (ImageView) view.findViewById(R.id.img_btn_exit);
        vehicleText = holder.txtVehicleNo.getText().toString();
        holder.imgBtnImg.setFocusable(false);
        view.setTag(holder);
    } else {
        holder = (Holder) view.getTag();
    }
    holder.txtName.setText(names.get(position));
    holder.txtType.setText(types.get(position));
    holder.txtVehicleNo.setText(vehicleno.get(position));
    holder.imgBtnImg.setImageResource(R.drawable.exit);
    holder.imgBtnImg.setFocusable(false);

    holder.imgBtnImg.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            textType = types.get(position);
            textVehicleNo=vehicleno.get(position);
            exitListItem(position);

            //Toast.makeText(context,textType,Toast.LENGTH_LONG).show();
            //Toast.makeText(context,textVehicleNo,Toast.LENGTH_LONG).show();

        }
    });
    notifyDataSetChanged();

    return view;
}

public interface MyClickListener {
    void onClick(int position, View v);
}

public void setOnClickListener(MyClickListener myClickListener) {
    this.myClickListener = myClickListener;
}


private class Holder {

    TextView txtid;
    TextView txtName;
    TextView txtVehicleNo;
    TextView txtType;
    ImageView imgBtnImg;
}

当我试图删除任何我发现的索引绑定错误时,请解决它。

日志

java.lang.IndexOutOfBoundsException:无效索引6,java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) at java.util.ArrayList.get(ArrayList.java:304)的尺码为6在com.example.lionden.lionden.CustomList.getView(CustomList.java:146) at android.widget.AbsListView.obtainView(AbsListView.java:2319)在android.widget.ListView.measureHeightOfChildren(ListView.java:1250) at android.widget.ListView.onMeasure(ListView.java:1162)在android.view.View.measure(View.java:15264)

EN

回答 1

Stack Overflow用户

发布于 2016-07-20 07:16:39

如果列表大小为6,则索引应为0至5。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38474664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档