2016-11-15 46 views
0

我的问题与this thread非常相似,但是它从未得到正确回答。 我有一个ImageAdapter设置,在ImageAdapter中访问XML图像数组

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在我的GridView中显示来自XML的图像。

+0

不清楚你的问题是什么 - 你的国家,只是说:“你不能”,但不要就此展开。你的代码的行为是什么 - 是抛出错误 - 它工作,但没有给你预期的输出? – David

+0

对不起,一旦加载应用程序崩溃,并有一个错误消息“引起:java.lang.NullPointerException:尝试调用虚拟方法”android.content.res.Resources android.content.Context.getResources ()对空对象引用“,我的问题是,我如何使我的GridView的ImageAdapter显示来自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