2013-11-17 7 views
0

У меня есть класс базового адаптера, который я использую для заполнения списка. Некоторые из содержимого определяются в файле макета, и мне также необходимо динамически добавлять определенное количество кнопок изображения в зависимости от значения int, переданного базовому адаптеру.
Объект obj - это объект, который имеет значение int вместе с arrayList растровых изображений; , когда я запускаю этот код, я получаю больше кнопок изображения, а затем значение obj.value. likePre_pics - это имя массива Список растровых изображений Может кто-то помочь?добавление imageButtons по коду

 public class News_Feed_BaseAdapter extends BaseAdapter{ 

         @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 

    LinearLayout linLayout = 
    (LinearLayout)convertView.findViewById(R.id.like_preview_LinearLayout); 

     for(int i=0; i< obj.value;i++) 
     { 
      ImageButton op= new ImageButton(context); 

      LayoutParams lpView = new LayoutParams(100, 100); 
      //op.setImageBitmap(obj.get(position).likePre_pics.get(i)); 

      linLayout.addView(op,lpView); 

     } 

       } 
     } 
+0

неустранимое: Основной java.lang.IndexOutOfBoundsException: недействительный индекс 4, размер 4 в java.util.ArrayList.throwIndexOutOfBoundsException (ArrayList.java:255) в java.util.ArrayList.get (ArrayList.java : 308) at com.example.foodshootr.News_Feed_BaseAdapter.getView (News_Feed_BaseAdapter.java:96) at android.widget.AbsListView.obtainView (AbsListView.java:2177) –

+0

Sooo, что это? Вы получаете больше ImageButtons, чем ожидалось, или ваше приложение терпит крах с вышеуказанной ошибкой? –

+0

если я положил for (int i = 0; i

ответ

0

Как я вижу из вашего кода есть две проблемы: сначала IndexOutOfBoundsException. ArrayList IndexOutOfBoundsException возникает только тогда, когда есть больше/меньше элемента, на который вы ссылаетесь. //op.setImageBitmap(obj.get(position).likePre_pics.get(i)); Линия, которую вы прокомментировали. Вы имеете в виду obj.get (position), где obj имеет obj.size() число элементов.

Следующая проблема с ImageButton, так как вы не используете revertview эффективным образом при добавлении нового образа в linLayout конвертирования, поэтому linLayout показывает более 2-х изображений.

Например: Если у вас есть 20 элементов в вашем списке, это означает, что getView будет называться 20 раз. Как вы найдете в документации по android convertView - это старый вид, который передается для повторного использования, и каждый раз, когда он передается вам, вы добавляете в него больше изображений. Вот почему возникают проблемы с изображением.

Взгляните на презентацию презентации/презентации компании Romain Guy World of ListView, если вы заинтересованы.

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