2011-12-29 4 views
-1

Итак, я использую список строк, которые я ввел, поэтому все строки есть, но когда я пытаюсь использовать подстроку на них, он продолжает давать мне исключение StringIndexOutOfBounds.Подстрока продолжает давать исключение StringIndexOutOfBounds

Вот код:

List<String> li = new ArrayList<String>(); 
      String entered = text.getText().toString().trim(); 
      String[] query = entered.split(" "); 
      int temp; 
      for (int i = 0; i < sizeString;i++) 
      { 
       temp = a[i].indexOf(" "); 
       if (query[0].toLowerCase().matches(a[i].toLowerCase().substring(0,temp))) 
        li.add(a[i]); 
      } 

Хорошо, так что теперь моя arrayadapter дает мне пустой указатель ADB не скажет мне, что помимо его NullPointer Полный код:

public void onClick (View v) 
     { 
      List<String> li = new ArrayList<String>(); 
      String entered = text.getText().toString().trim(); 
      String[] query = entered.split(" "); 
      int temp; 
      for (int i = 0; i < sizeString;i++) 
      { 
       if (a[i].indexOf (" ") != -1) 
        { 
         temp = a[i].indexOf(" "); 
         a[i].substring(0,temp); 
        } 
       if (query[0].toLowerCase().equals(a[i].toLowerCase())) 
        li.add(a[i]);     
      } 
      setContentView(R.layout.search_results); 
      final ListView list= (ListView)findViewById(R.id.search_list); 
      String[] results = new String[sizeString]; 
      for(int i = 0; i<li.size();i++) 
       results[i]=li.get(i); 
      list.setAdapter(new ArrayAdapter<String>(Browse.this,android.R.layout.simple_list_item_1 ,results)); 
     } 
+0

Я думаю, что мы обсуждали это в другом потоке, пожалуйста, добавьте System.out прямо перед if (query [0] ...) statment для значений [i] и temp. Это даст вам понять, почему это ошибка. Как мы обсуждали, если длина [i] меньше длины подстроки (0, темп), она выкинет StringIndexOutofBound Exception – kosa

+0

Пожалуйста, избегайте повторных проводок. – kosa

ответ

1

Если нет места, тогда temp будет -1, вы должны это проверить.

0

возможно добавить чек на возврат -1 из IndexOf()

0

поставил это условие в коде if (a[i].indexOf (" ") != -1) до этой линии temp = a[i].indexOf(" ");

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