2016-11-15 56 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