Посмотрите на ваш цикл:
for (int i = 0; i < list1.getSize(); i++){
website = list1.getElementAt(i);
username = list1.getElementAt(i);
password = list1.getElementAt(i);
upInfo.add(new UsernamesAndPasswords(website, username, password));
}
Когда вы столкнетесь с такой проблемой индексации, попробуйте использовать свой мозг в качестве отладчика, подставив значения:
// Loop iteration 1 (index = 0)
website = list1.getElementAt(0);
username = list1.getElementAt(0);
password = list1.getElementAt(0);
ПервыйЭлемент в вашем списке - это имя веб-сайта, но вы не увеличиваете индекс, прежде чем пытаться установить соответствующее имя пользователя или пароль.Вы хотите:
website = list1.getElementAt(0);
username = list1.getElementAt(1);
password = list1.getElementAt(2);
Исходя из структуры вашего файла, вам, очевидно, необходимо увеличить этот индекс в вашем цикле.
website = list1.getElementAt(i);
i++;
username = list1.getElementAt(i);
i++;
password = list1.getElementAt(i);
i++
вашего цикла for
позаботится об увеличении индекса до элемента 4, и вам придется изменить getSize()
в качестве условия выхода цикла на getSize() - 2
, чтобы избежать выхода индекса за пределы.
Вы также можете переключиться на сохранение списка с помощьюкаждый веб-сайт и соответствующие данные в отдельной строке и разделение на основе некоторого разделителя (табуляция, запятая и т. д.), который может сделать концептуально более простым для вас или кого-то еще, кто смотрит на ваш код, но это изменение не только несколько тривиально дляреализовать, но также несколько тривиально по стоимости.