2012-04-25 4 views
0

У меня есть один массив строк, который хранит дату в формате «2012-04-26T08: 38: 00». мне нужно два разница во времени, так что я бы разделить строку из «T» и сохранить его в массиве так что теперьArrayindex out of bound android

at array index 0 = 2012-04-26 
and array index 1 = 08:38:00 

теперь от этого 1-го индекса я расщепляется с «:» так что хранится как

[0] = 08 
[1] = 38 
[2] = 00 

сейчас, когда я минус текущее время из этого, он дал мне хороший результат вчера, но теперь он вызывает ошибку.

04-25 17:32:34.103: WARN/System.err(4292): java.lang.ArrayIndexOutOfBoundsException: index=1 length=1 
04-25 17:32:34.103: WARN/System.err(4292):  at com.housedisplay.ListViewCustomAdapter.getView(ListViewCustomAdapter.java:83) 
04-25 17:32:34.103: WARN/System.err(4292):  at android.widget.AbsListView.obtainView(AbsListView.java:1964) 
04-25 17:32:34.113: WARN/System.err(4292):  at android.widget.ListView.makeAndAddView(ListView.java:1756) 
04-25 17:32:34.113: WARN/System.err(4292):  at android.widget.ListView.fillDown(ListView.java:656) 
04-25 17:32:34.113: WARN/System.err(4292):  at android.widget.ListView.fillFromTop(ListView.java:716) 
04-25 17:32:34.113: WARN/System.err(4292):  at android.widget.ListView.layoutChildren(ListView.java:1609) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.widget.AbsListView.onLayout(AbsListView.java:1794) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:912) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.123: WARN/System.err(4292):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:912) 
04-25 17:32:34.133: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.133: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.133: WARN/System.err(4292):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542) 
04-25 17:32:34.133: WARN/System.err(4292):  at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1527) 
04-25 17:32:34.144: WARN/System.err(4292):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1316) 
04-25 17:32:34.144: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.144: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.144: WARN/System.err(4292):  at android.widget.FrameLayout.onLayout(FrameLayout.java:400) 
04-25 17:32:34.144: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.154: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.154: WARN/System.err(4292):  at com.google.android.maps.MapView.onLayout(MapView.java:764) 
04-25 17:32:34.154: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.163: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.163: WARN/System.err(4292):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:912) 
04-25 17:32:34.163: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.163: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.163: WARN/System.err(4292):  at android.widget.FrameLayout.onLayout(FrameLayout.java:400) 
04-25 17:32:34.173: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.183: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.183: WARN/System.err(4292):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542) 
04-25 17:32:34.183: WARN/System.err(4292):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1403) 
04-25 17:32:34.183: WARN/System.err(4292):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1314) 
04-25 17:32:34.183: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.183: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.193: WARN/System.err(4292):  at android.widget.FrameLayout.onLayout(FrameLayout.java:400) 
04-25 17:32:34.193: WARN/System.err(4292):  at android.view.View.layout(View.java:9330) 
04-25 17:32:34.193: WARN/System.err(4292):  at android.view.ViewGroup.layout(ViewGroup.java:3795) 
04-25 17:32:34.203: WARN/System.err(4292):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1201) 
04-25 17:32:34.203: WARN/System.err(4292):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1944) 
04-25 17:32:34.203: WARN/System.err(4292):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-25 17:32:34.213: WARN/System.err(4292):  at android.os.Looper.loop(Looper.java:126) 
04-25 17:32:34.213: WARN/System.err(4292):  at android.app.ActivityThread.main(ActivityThread.java:3997) 
04-25 17:32:34.213: WARN/System.err(4292):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-25 17:32:34.213: WARN/System.err(4292):  at java.lang.reflect.Method.invoke(Method.java:491) 
04-25 17:32:34.213: WARN/System.err(4292):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
04-25 17:32:34.223: WARN/System.err(4292):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
04-25 17:32:34.223: WARN/System.err(4292):  at dalvik.system.NativeStart.main(Native Method) 

Код ::

try { 
      holder.imgViewLogo.setText(arr_ServiceNumber[position]); 
      holder.txtViewTitle.setText(itemList[position]); 

      stime = arr_ScheduledDepartureTime[position].split("T"); 
      sTime2 = stime[1].split(":"); 

      Date dt = new Date(); 
      int hours = dt.getHours(); 
      int minutes = dt.getMinutes(); 
      int myhour = Integer.parseInt(sTime2[0]); 
      int mymin = Integer.parseInt(sTime2[1]); 

      int onefire = Math.abs((myhour - hours) * 60); 
      int total; 
      if (onefire >= 60) { 
       total = onefire - Math.abs((mymin - minutes)); 
      } else { 
       total = onefire + Math.abs((mymin - minutes)); 
      } 
      holder.lstrw_btn_departure.setText(total + " min \n" + "(" 
        + sTime2[0] + ":" + sTime2[1] + ")"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
+0

Нет ли у вас способа обработать дату/время внутри как 'long' и' String' только для показа целей? – zapl

ответ

1

Java может анализировать строку для вас.

String dateString = "2012-04-26T08:38:00"; 
SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
Date date = null; 
try { 
    date = parser.parse(dateString); 
} catch (ParseException e) { 
    // error parsing. 
} 
if (date != null) { 
    // do something with date. 
} 
+0

+1 согласен с Simpledateformat Но проверьте свой код .... почему 'T' в конструкторе упрощенного форматирования? Работает? –

+0

Да, это работает. Существует T в datestring OP, поэтому формат даты, указанный вами в конструкторе SimpleDateFormat, должен включать это или синтаксический анализ. http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html имеет пример с этим 'T'. – zapl

0

Это происходит потому, что вы пытаетесь получить доступ ко второму индексу (1), когда у вас есть только 1 элемент в ArrayList означает ваш единственный действительный индекс 0 .

Самая первая строка ошибки сообщает вам об этом ..

`java.lang.ArrayIndexOutOfBoundsException: index=1 length=1` 

Это означает, что у вас есть исключение ArrayIndexOutOfBoundsException при доступе к индексу номер 1 для ArrayList размером 1 (значение 0 является единственным индексом с чем-то в нем прямо сейчас.)

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