У меня есть слушатель, когда я нажимаю на даты, когда он будет искать арраиста и получать даты того, что я нажимаю тогда, когда я меняю месяц, я удалю даты, а затем добавлю даты в текущем месяце.java.lang.IndexOutOfBoundsException: Недопустимый индекс 2, размер 2 в Arraylist?
public void onSelectDate(Date date, View view) {
JSONObject jsonObj = new JSONObject(jsonStr);
JsonArray datesIn = jsonObj.getJSONArray(TAG_SCHEDULE);
for (int i = 0; i < datesIn.length(); i++) {
JSONObject c = datesIn.getJSONObject(i);
String dateD = c.getString(TAG_DATED);
String statusD = c.getString(TAG_STATUS);
HashMap<String, String> contact = new HashMap<String, String>();
contact.put("Tag_dated", dateD);
contact.put("Tag_status", statusD);
contactList.add(contact);
Date s = formatter.parse(dateD);
ArrayList<HashMap<String, String>> contactList= new ArrayList<HashMap<String,String>>();;
if(formatter.format(date).equals(contactList.get(0).get(TAG_DATED))){
if(contactList.get(0).get(TAG_STATUS).equals("Occupied")){
Toast.makeText(getApplicationContext(),"S",Toast.LENGTH_SHORT).show();
}else if(contactList.get(0).get(TAG_STATUS).equals("Reserved"))
Toast.makeText(getApplicationContext(),"R",Toast.LENGTH_SHORT).show();
}else if(formatter.format(date).equals(contactList.get(1).get(TAG_DATED))){
if(contactList.get(1).get(TAG_STATUS).equals("Occupied")){
Toast.makeText(getApplicationContext(),"S",Toast.LENGTH_SHORT).show();
}else if(contactList.get(1).get(TAG_STATUS).equals("Reserved")){
Toast.makeText(getApplicationContext(),"R",Toast.LENGTH_SHORT).show();
}
}else if(formatter.format(date).equals(contactList.get(2).get(TAG_DATED))){
if(contactList.get(2).get(TAG_STATUS).equals("Occupied")){
Toast.makeText(getApplicationContext(),"S",Toast.LENGTH_SHORT).show();
}else if(contactList.get(2).get(TAG_STATUS).equals("Reserved")){
Toast.makeText(getApplicationContext(),"R",Toast.LENGTH_SHORT).show();
}
}else if(formatter.format(date).equals(contactList.get(3).get(TAG_DATED))){
if(contactList.get(3).get(TAG_STATUS).equals("Occupied")){
Toast.makeText(getApplicationContext(),"S",Toast.LENGTH_SHORT).show();
}else if(contactList.get(3).get(TAG_STATUS).equals("Reserved")){
Toast.makeText(getApplicationContext(),"R",Toast.LENGTH_SHORT).show();
}
}else if(formatter.format(date).equals(contactList.get(4).get(TAG_DATED))){
if(contactList.get(4).get(TAG_STATUS).equals("Occupied")){
Toast.makeText(getApplicationContext(),"S",Toast.LENGTH_SHORT).show();
}else if(contactList.get(4).get(TAG_STATUS).equals("Reserved")){
Toast.makeText(getApplicationContext(),"R",Toast.LENGTH_SHORT).show();
}
}else if(formatter.format(date).equals(contactList.get(5).get(TAG_DATED))){
if(contactList.get(5).get(TAG_STATUS).equals("Occupied")){
Toast.makeText(getApplicationContext(),"S",Toast.LENGTH_SHORT).show();
}else if(contactList.get(5).get(TAG_STATUS).equals("Reserved")){
Toast.makeText(getApplicationContext(),"R",Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(getApplicationContext(),"NP",Toast.LENGTH_SHORT).show();
}
}
моя проблема в том, когда я меняю месяц, а затем на даты, когда у него есть ошибка. Ошибка
public void onChangeMonth(int month, int year) {
contactList.clear();
HashMap<String, String> contact = new HashMap<String, String>();
contact.put("Tag_dated", dateD);
contact.put("Tag_status", statusD);
contactList.add(contact);
}
Logcat:
http://i.stack.imgur.com/Is35y.png
'' Недопустимый индекс 2, размер 2 "' означает размер '2', поэтому действительный индекс равен только' 0', а '1' – DnR
. Размер вашего контактного списка равен 2, чтобы вы могли получить индекс 0 и 1. –
FYI: Когда ArrayList имеет 2 элемента (размер 2). Первый элемент находится в индексе 0, а второй - в индексе 1. И нет ничего в индексе 2. – grattmandu03