Страница 1 из 1

Самопроизвольно меняются значения в массиве с viewID

Добавлено: 26 фев 2014, 02:25
meerz
Добрый день.

Нужен совет, вот с такой проблемой.

Есть 20 button, инициализированы в onCreate().
Далее
int t=0; Random r;
ArrayList<Map<String, Object>> bdr;
final String BUTTON_ID="buttonID";
final String BUTTON_DRAWABLE="buttonDrawable";
ArrayList<Integer> myImages;
int testViewId= 0;
int testBGId= 0;
...........
............
t = r.nextInt(myImages.size()-1); // случайный индекс
Log.d(LOG_TAG,"b8 Id = "+b8.getId());
Log.d(LOG_TAG,"BG "+t + " = "+myImages.get(t));
m= new HashMap<String, Object>(); добавляем в массив
m.put(BUTTON_ID, b8.getId());
m.put(BUTTON_DRAWABLE, myImages.get(t));
bdr.add(m);
testViewId= b8.getId();
testBGId= myImages.get(t);
Log.d(LOG_TAG, "tested Vars = "+testViewId+ " - "+ testBGId);
myImages.remove(t); // удаляем из массива откуда брали чтобы не повторяться
// так 20 раз

// и тут же ничего не меняя в массиве bdr

for (int i=0; i<bdr.size();i++)
{
Log.d(LOG_TAG, i+" Button ID "+bdr.get(i).get(BUTTON_ID));
Log.d(LOG_TAG, "Drawable "+bdr.get(i).get(BUTTON_DRAWABLE));
}


Вот что в логах

01-13 22:54:02.398: D/mLog(14394): b8 Id = 2131296293
01-13 22:54:02.398: D/mLog(14394): BG 1 = 2130837572

01-13 22:54:02.398: D/mLog(14394): tested Vars = 2131296293 - 2130837572

........................
.........................

01-13 22:54:02.413: D/mLog(14394): 6 Button ID 2131296292
01-13 22:54:02.413: D/mLog(14394): Drawable 2130837525
01-13 22:54:02.413: D/mLog(14394): 7 Button ID 2131296294
01-13 22:54:02.413: D/mLog(14394): Drawable 2130837572
01-13 22:54:02.413: D/mLog(14394): 8 Button ID 2131296294
01-13 22:54:02.413: D/mLog(14394): Drawable 2130837572

01-13 22:54:02.398: D/mLog(14394): tested Vars = 2131296293 - 2130837572


Вот вопрос если я ничего не менял в массиве а только его заполнил что отражается в логах то когда поменялось значение в массиве?
при этом явно назначенные значения в переменных testViewId= b8.getId(); testBGId= myImages.get(t); не поменялись.
Обратите внимание в массиве теперь две одинаковые ID
Для чистоты эксперимента убрал весь остальной код. Оставил только логи и слушатели на кнопках. Слушатель на v.getId() отдает правильное значение, но вот при попытке найти это значение в массиве, уже его не находит. Потому что его там уже нет.
Где может быть ошибка? Куда смотреть?

Заранее спасибо если найдете время на мое обращение.

С Уважением.

Alexander Tsoy

Re: Самопроизвольно меняются значения в массиве с viewID

Добавлено: 26 фев 2014, 06:59
Foenix
Саша, никто не найдет времени на то, чтоб разбирать твой неотформатированный код. Исправь его в редакторе (ниже есть кнопочка "редактор") и больше так не делай.

Re: Самопроизвольно меняются значения в массиве с viewID

Добавлено: 26 фев 2014, 17:53
adarash
присоединяюсь