Не решено java.lang.IndexOutOfBoundsException: Index: 2, Size: 2

Babty

Почетный гость
Помогите , пожалуйста решить
Нужно что бы этой проблемы не было, хочу сделать так чтобы при сохрании , arraylist не выводил в таком порядке [1,2,3,4, ...]
Чтоб выводил по отдельности
Как показано на картинке
Спасибо
Код:
public class PinView extends SubsamplingScaleImageView {

    private ArrayList<PointF> sPin = new ArrayList<>();

    private ArrayList<String> pinNames = new ArrayList<String>();

    private Bitmap pinBitmap;

    private static int itemIndex;

    int i = 0;

    public PinView(Context context) {

        this(context, null);

        itemIndex = 0;

    }



    public PinView(Context context, AttributeSet attr) {

        super(context,attr);

        initialise();

    }



   public String getItem() {

        if (itemIndex >=  pinNames.size()) {

            return null;

        }

        return pinNames.get(itemIndex);

    }

   public String getNextItem() {

       itemIndex ++;

return getItem();

   }

    public boolean setPin(PointF sPin, String name, boolean isShowOrAdd) {

        if (pinNames.contains(name)) {

            return false;

        } else {

            // isShowOrAdd is used only for If we want to add only one marker /only shows markers on Image

            if (isShowOrAdd) {

                this.sPin.add(sPin);

                pinNames.add(name);

                initialise();

                invalidate();

                return true;

            } else {



                if (pinNames.size() < 1) {

                    this.sPin.add(sPin);

                    pinNames.add(name);

                    initialise();

                    invalidate();

                    return true;

                } else {

                    return false;

                }

            }

        }

    }



    public PointF getPin(String name) {

        return sPin.get(pinNames.indexOf(name));

    }

    public boolean removePin(String name) {

        if (pinNames.contains(name)) {

            sPin.remove(pinNames.indexOf(name));

            pinNames.remove(name);

            return true;

        } else {



            return false;

        }

    }

    public ArrayList<String> getPinNames() {

        return pinNames;

    }

    private void initialise() {

            float density = getResources().getDisplayMetrics().densityDpi;

            pinBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.pin);

            float w = (density / 1000f) * pinBitmap.getWidth();

            float h = (density / 1000f) * pinBitmap.getHeight();

            pinBitmap = Bitmap.createScaledBitmap(pinBitmap, (int) w, (int) h, true);

    }

    ArrayList<Model> canvasArray = new ArrayList();

    @Override

    protected void onDraw(Canvas canvas ) {

       super.onDraw(canvas);

        // Don't draw pinBitmap before image is ready so it doesn't move around during setup.

        if (!isReady()) {

            return;



        }



        canvasArray.clear();

        Paint paint = new Paint();

        paint.setAntiAlias(true);

        paint.setColor(Color.RED);

        paint.setTextSize(60);

            for (PointF point : sPin) {

            if (point != null && pinBitmap != null) {

                PointF vPin = sourceToViewCoord(point);

                float vX = vPin.x - (pinBitmap.getWidth() / 2);

                float vY = vPin.y - pinBitmap.getHeight();

                canvas.drawText("" + pinNames.get(i++), vX, vY, paint);

                canvas.drawBitmap(pinBitmap, vX, vY, paint);

                Model model = new Model();

                model.setX(vX);

                model.setY(vY);

                model.setBitmapH(pinBitmap.getHeight());

                model.setBitmapW(pinBitmap.getWidth());

                model.setPoint(point);

                canvasArray.add(model);

                     /*    int itemCount = canvasArray.size();

              if (canvasArray != null && canvasArray.size() > 0) {

                    for (int i = 0; i < canvasArray.size(); i++) {

                        canvas.drawText("" + itemCount, vX, vY, paint);

                    }

                }

                else {

                   canvasArray= new ArrayList<>();

                }*/

            }

        }

    }

    public ArrayList<Model> setOnPinClick() {

        return canvasArray;

    }

    interface OnPinClick {

        void pinClick();

    }





}
 

Вложения

  • nimetön.png
    nimetön.png
    44,1 КБ · Просмотры: 2
Последнее редактирование модератором:
Верх Низ