2010-09-20 4 views
3

Я очень зелёный разработчик Android и нуждаюсь в помощи со странным сбоем программы. Часто программа будет работать нормально. Существует равный шанс, что он потерпит неудачу (см. Стек в конце). Я могу посмотреть, как программа запускается через функцию getView, и все выглядит по порядку (т. Е. Вся информация там, как ожидалось, и проходит через convertView, казалось бы, отлично). Либо это пройдет через несколько раз, а затем программа будет A-OK или она не удастся, как показано ниже, и я не смог определить причину сбоя. Еще страннее то, что если я держу телефон в ландшафтном режиме, он никогда не потерпит неудачу !! Это происходит только около 50% времени в портретной ориентации. Может кто-нибудь, пожалуйста, помогите мне?Неправильная ориентация в ListView.layoutChildren - исключение ArrayIndexOutofBoundsException

 @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 

     View v = convertView; 
     if (v == null) { 
      LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.row, null); 
     } 
     ADDPResults addpres = items.get(position); 
     if (addpres != null) { 
       //initialize display variables from inflated row.xml variables 
       TextView iptext = (TextView) v.findViewById(R.id.IPtext); 
       TextView mactext = (TextView) v.findViewById(R.id.MACtext); 
       TextView nametext = (TextView) v.findViewById(R.id.Nametext); 
       TextView devicetext = (TextView) v.findViewById(R.id.Devicetext); 
       //TextView firmwaretext = (TextView) v.findViewById(R.id.Firmwaretext); 
       //write the real data to the display 
       iptext.setText("IP Address:  "+addpres.addp_deviceIP.toDecString()); 
       mactext.setText("MAC Address: "+addpres.addp_deviceMAC.toHexString()); 
       nametext.setText("Name:    "+addpres.addp_devName); 
       devicetext.setText("Device:   "+addpres.addp_devType);  
       //firmwaretext.setText("Firmware:  "+addpres.addp_FWVersion); 
     } 
     return v; 
    } 
} 

----------------------- Неудача ------------------- --------------------------- Тема [< 3> main] (Приостановлено (исключение ArrayIndexOutOfBoundsException)) ListView.layoutChildren(): 1686 ListView (AbsListView) .onLayout (boolean, int, int, int, int): 1224 ListView (View) .layout (int, int, int, int): 6886 LinearLayout.setChildFrame (View, int, int, int, int): 1119 LinearLayout.layoutVertical() line: 998 LinearLayout.onLayout (boolean, int, int, int, int) строка: 918 LinearLayout (View) .layout (int , int, int, int) строка: 6886 FrameLayout.onLayout (boolean, int, int, int, int) строка: 333 FrameLayout (View) .layout (int, int, int, int) строка: 6886 LinearLayout. setChildFrame (View, int, int, int, int) line: 1119 LinearLayout.layoutVertical() line: 998 LinearLayout.onLayout (boolean, int, int, int, int) строка: 918 LinearLayout (View) .layout (int, int, int, int): 6886 PhoneWindow $ DecorView (FrameLayout) .onLayout (строка boolean, int, int, int, int): 333 PhoneWindow $ DecorView (View) .layout (int, int, int, int) line: 6886 ViewRoot.performTraversals() line: 996 ViewRoot.handleMessage (Message) line: 1633 ViewRoot (Handler) .dispatchMessage (Message) line: 99 Looper.loop() line: 123 ActivityThread.main (String []) строка: 4363 Method.invokeNative (Object, Object [], Class, Class [], Class, int, boolean) строка: недоступна [native метод] Строка Method.invoke (Object, Object ...): 521 ZygoteInit $ MethodAndArgsCaller.run(): 862 ZygoteInit.main (String []) строка: 620 NativeStart.main (String []) строка : не доступен [нативный метод]

ответ

1

Я хотел бы проверить, что вы получите, как «положение» и сравните, что размер вашего массива элементов ... так как исключение говорит: ArrayIndexOutOfBoundsException

+0

Я проверил. Обычно в массиве 5 элементов, и «позиция» никогда не превышает 4, как ожидалось. Обычно авария произойдет на итерации «Position = 4», но не всегда. – Frac

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