2012-05-31 3 views
0

Я работаю над синтаксическим разбором XML.java.lang.IndexOutOfBoundsException: Неверный индекс 11, размер 11

Logcat ошибка как ...

java.lang.IndexOutOfBoundsException: Invalid index 11, size is 11 

я получил ошибку в

map.put("pubdate", sitesList.getPubdate().get(i)); 

for (int i = 0; i < sitesList.getName().size(); i++) { 
     System.out.println("value of i==============>"+i); 
     HashMap<String, String> map = new HashMap<String, String>(); 

     System.out.println("\nvalue of title==============>"+ sitesList.getName().get(i)); 

     map.put("title", sitesList.getName().get(i)); 
     map.put("pubdate", sitesList.getPubdate().get(i)); 
     map.put("desc", sitesList.getDesc().get(i)); 

     items.add(map); 

    } 

Спасибо всем.

+0

В 11 нет. Кроме этого, мы предполагаем, что мы не можем видеть xml. –

+0

Знаете ли вы, что 'getPubDate' имеет тот же размер, что и' getName'? – assylias

ответ

0

Спасибо всем, Наконец, я получил решение. Для моей проблемы здесь siteList.getName() больше, чем sitesList.getPubdate(), поэтому теперь я использую

для (int i = 0; i < sitesList.getPubdate(). Size (); i ++) вместо
для (int i = 0; i < sitesList.getName(). size(); i ++)

for (int i = 0; i < sitesList.getPubdate().size(); i++) { 
     System.out.println("value of i==============>"+i); 
     HashMap<String, String> map = new HashMap<String, String>(); 


     map.put("title", sitesList.getName().get(i)); 
     map.put("pubdate", sitesList.getPubdate().get(i)); 
     map.put("desc", sitesList.getDesc().get(i)); 

     items.add(map); 
    } 
1

я думаю, что здесь размер sitesList,

Используйте sitesList.size()вместо того, чтобыsitesList.getName().size()

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

     System.out.println("value of i==============>"+i); 
     HashMap<String, String> map = new HashMap<String, String>(); 

     System.out.println("\nvalue of title==============>"+ sitesList.get(i).getName()); 

     map.put("title", sitesList.get(i).getName()); 
     map.put("pubdate", sitesList.get(i).getPubdate()); 
     map.put("desc", sitesList.get(i).getDesc()); 

     items.add(map); 

    } 
+0

Я не понимаю вашего ответа. О, теперь я знаю. Объясните в тексте, а не в комментарии. –

+0

@Dave Newton see OP use wron conditioin in for loop –

+0

@SamirMangroliya Я не думаю, что его код даже скомпилировался, если бы это было проблемой. – assylias

2

Вы уверены, что sitesList.getName() имеет тот же размер sitesList.getPubdate()?

Поскольку единственной причиной этого является то, что за исключением sitesList.getName() больше, чем sitesList.getPubdate() :)

+0

Спасибо, да Вы правы, sitesList.getName() больше, чем sitesList.getPubdate(). Как я могу это решить. –

+1

Ну, теперь вы должны понять, почему у них разные размеры и исправить эту проблему. Чтобы решить эту проблему, вы можете проверить, какой список имеет минимальный размер, и использовать этот размер в качестве защитника для цикла for, но с этим решением вы пропустите некоторые данные если у вас есть больший список (как в вашем случае). Как я уже говорил, попробуйте понять, почему у вас разные размеры. – StErMi

+0

Я работаю над синтаксическим анализом SAX xml для «http://news.google.com/?output=rss» getname() является значением заголовка и getpubdate() - значение даты. –

0

Souldnt ваш цикл выглядит следующим образом:

for (int i = 0; i < sitesList.size(); i++) { 
     System.out.println("value of i==============>"+i); 
     HashMap<String, String> map = new HashMap<String, String>(); 

     System.out.println("\nvalue of title======>"+ sitesList.get(i).getName()); 

     map.put("title", sitesList.get(i).getName()); 
     map.put("pubdate", sitesList.get(i).getPubdate()); 
     map.put("desc",sitesList.get(i).getDesc()); 

     items.add(map); 

    } 
Смежные вопросы