2015-02-25 7 views
0

В моем массиве строк около 40 элементов, так как я могу задать длину строки []? Мой код:Исключение строкового массива за пределами исключения

Context context; 
String[] mTitle; 
String[] mSubTitle; 
LayoutInflater inflater; 

public MenuListAdapter(Context context, String[] title, String[] subtitle) 
     { 
    this.context = context; 
    this.mTitle = title; 
    this.mSubTitle = subtitle; 
} 

@Override 
public int getCount() { 
    return mTitle.length; 
} 

@Override 
public Object getItem(int position) { 
    return mTitle[position]; 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@SuppressLint("ViewHolder") public View getView(int position, View convertView, ViewGroup parent) { 
    // Declare Variables 
    TextView txtTitle; 
    TextView txtSubTitle; 

    inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View itemView = inflater.inflate(R.layout.drawer_list_item, parent, 
      false); 

    // Locate the TextViews in drawer_list_item.xml 
    txtTitle = (TextView) itemView.findViewById(R.id.title); 
    txtSubTitle = (TextView) itemView.findViewById(R.id.subtitle); 

    // Set the results into TextViews 
    String[] title = context.getResources().getStringArray(R.array.title); 
    String[] subtitle = context.getResources().getStringArray(R.array.subtitle); 
    txtTitle.setText(title[position]); 
    txtSubTitle.setText(subtitle[position]); 

    return itemView; 
} 

} 

И мой массив строк:

<string-array name="title"> 
<item>10</item> 
<item>11</item> 
<item>11A</item> 
<item>11G</item> 
<item>12</item> 
<item>12A</item> 
<item>12Y</item> 
<item>13</item> 
<item>13A</item> 
<item>13G</item> 
<item>13Y</item> 
<item>14</item> 
<item>14G</item> 
<item>15</item> 
<item>15A</item> 
<item>15Y</item> 
<item>16</item> 
<item>16A</item> 
<item>17</item> 
<item>20</item> 
<item>22</item> 
<item>23</item> 
<item>23E</item> 
<item>24</item> 
<item>25</item> 
<item>26</item> 
<item>26A</item> 
<item>26G</item> 
<item>27</item> 
<item>29</item> 
<item>31</item> 
<item>31E</item> 
<item>32</item> 
<item>33</item> 
<item>34</item> 
<item>35</item> 
<item>36</item> 
<item>37</item> 
<item>38</item> 
<item>42</item> 
<item>43</item> 
<item>44</item> 
<item>M26</item> 
</string-array> 

Где я должен объявить длину массива? Точная ошибка:

java.lang.ArrayIndexOutOfBoundsException: length = 4; index = 4

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

Заранее спасибо.

+0

Вы забыли закрывающий тег Струнный массива после последнего M26 –

+0

Я не понимаю, зачем вам нужен этот 'String [] title = context.getResources(). GetStringArray (R.array.title); String [] subtitle = context.getResources(). GetStringArray (R.array.subtitle); '? когда у вас есть 'this.mTitle = title; this.mSubTitle = subtitle; 'и с использованием класса модели будет лучше – Raghunandan

+0

Как и @Raghunandan, вы не должны снова извлекать свой массив в' getView() '. Вы должны использовать mTitle и mSubtitle. Проверьте длину обоих этих массивов. Ошибка означает, что один из этих массивов (возможно, субтитры) содержит только 4 элемента. – SnyersK

ответ

1

Ваши массивы title и subtitle не такой же длины. Проверьте свои данные.

Вы не можете установить длину массива, но вы можете получить его из свойства:

int number_of_items = title.length; 
+1

Ну, на самом деле это была довольно глупая ошибка, мне просто пришлось сделать две массивы той же длины. Благодарю. –

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