2016-11-15 16 views
0

Мой вопрос очень похож на this thread, однако на него никогда не отвечали должным образом. У меня есть настройка ImageAdapter как таковая;Доступ к массиву XML-изображений в пределах ImageAdapter

public class ImageAdapter extends BaseAdapter { 
    private Context mContext; 
    int[] mImages; 

    public ImageAdapter(Context c, int[] images) { 
     mContext = c; 
     mImages = images; 
    } 

    @Override 
    public int getCount() { 
     return 0; 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 
     if (convertView == null) { 
      // if it's not recycled, initialize some attributes 
      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(200, 200)); 
     } else { 
      imageView = (ImageView) convertView; 
     } 
     imageView.setImageResource(mImages[position]); 
     return imageView; 
    } 
} 

И я хочу, чтобы изображения были из XML;

<integer-array name="images"> 
    <item>@drawable/image1</item> 
    <item>@drawable/image2</item> 
    <item>@drawable/image3</item> 
</integer-array> 

В моем классе MainActivity я пытался получить массив изображения и передать его в ImageAdapter, но я не могу;

public class MainActivity extends AppCompatActivity { 
    private int images[] = getResources().getIntArray(R.array.images); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     GridView gridview = (GridView) findViewById(R.id.gridView); 
     gridview.setAdapter(new ImageAdapter(MainActivity.this, images)); 
    } 
} 

Сейчас я получаю сообщение об ошибке:

Вызванный: java.lang.NullPointerException: попытка вызвать виртуальный метод «android.content.res.Resources android.content.Context.getResources() 'на нулевой ссылке объекта

с моим приложением, сбой при загрузке. Я хочу, чтобы мой ImageAdapter отображал изображения из XML в моем GridView.

+0

мутноватый, что ваш вопрос - Вы утверждаете, что просто «вы не можете», но не растягиваются на этом. Каково поведение вашего кода - это бросание ошибок - работает ли оно, но не дает вам ожидаемого результата? – David

+0

Извините, как только загрузится приложение, оно вылетает, и появляется сообщение об ошибке «Caused by: java.lang.NullPointerException: попытка вызвать виртуальный метод» android.content.res.Resources android.content.Context.getResources() 'в ссылке нулевого объекта ", Мой вопрос: как мне сделать ImageAdapter для моих графических изображений GridView из XML-файла? @ henners66 – Stafford

ответ

0

пытаются использовать

private int images[] = {R.drawable.image1, R.drawable.image3, R.drawable.image3}; 

вместо

private int images[] = getResources().getIntArray(R.array.images); 
+0

Это работает, но я хочу, чтобы изображения были получены из XML-файла, а не были определены в коде @Malik Abu Qaoud – Stafford

+0

setImageResource принимает только значение int, я не думаю, что массив изображения (getResources () .getIntArray (R.array.images)), что из файла XML, правильно получает значение int изображения –

+0

Что это за исправить? – Stafford