【问题标题】:Accessing XML Image Array within an ImageAdapter在 ImageAdapter 中访问 XML 图像数组
【发布时间】:2016-11-15 12:10:35
【问题描述】:

我的问题与this thread 非常相似,但从未得到正确回答。 我有一个 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 在我的 GridView 中显示来自 XML 的图像。

【问题讨论】:

  • 不清楚你的问题是什么——你只是说“你不能”,但不要对此进行扩展。您的代码的行为是什么 - 它是否引发错误 - 它是否正常工作但没有给您预期的输出?
  • 对不起,一加载应用程序就崩溃了,并且有错误消息“Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference",我的问题是,如何让我的 GridView 的 ImageAdapter 从 XML 文件显示图像? @henners66

标签: arrays android-studio gridview baseadapter typed-arrays


【解决方案1】:

尝试使用

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

而不是

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

【讨论】:

  • 这可行,但我希望能够让图像来自 XML 文件,而不是在代码中定义 @Malik Abu Qaoud
  • setImageResource 只需要一个 int 值,我不认为来自 XML 文件的图像数组 (getResources().getIntArray(R.array.images)) 是获取图像的 int 值正确
  • 有什么办法解决这个问题?
  • 我想到的唯一解决方案就是更换
  • private int images[] = getResources().getIntArray(R.array.images) 到
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多