2016-11-15 3 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 () 'nullのオブジェクト参照で "私の質問は、私はどのようにImageViewをXMLファイルからの私のGridView表示イメージのために作るのですか? @ 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

関連する問題