You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中GridView无法显示Drawable图片问题求助

解决GridView无法显示drawable图片的问题

嘿,我帮你排查下GridView不显示图片的问题,看了你的代码,有几个小细节需要调整,咱们一步步来:

问题点分析

  • 多余的空构造函数:你的Adapter_Category里有一个空的构造函数,不仅没用还容易造成混淆,建议删掉。
  • notifyDataSetChanged调用时机错误:你在把适配器绑定到GridView之前就调用了这个方法,这时候适配器还没和GridView建立关联,完全没必要,直接删掉这行就行。
  • getItem和getItemId实现不规范:这两个方法你返回了null和0,虽然BaseAdapter允许这种写法,但正确实现它们能避免后续扩展功能时出现潜在问题。
  • 布局加载的小疏漏:inflate布局时没有传入父容器参数,可能导致图片的布局参数异常,显示不出来。

修正后的代码

MinhActivity.java

public class MinhActivity extends Activity {
    GridView gridView;
    int categoryImages[] ={R.drawable.android1,R.drawable.android2,R.drawable.android3,R.drawable.android4, R.drawable.android5, R.drawable.android6};
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_minh);
        gridView = findViewById(R.id.grView_categories);
        Adapter_Category adapter_category = new Adapter_Category(MinhActivity.this, categoryImages);
        gridView.setAdapter(adapter_category);
    }
}

Adapter_Category.java

public class Adapter_Category extends BaseAdapter {
    LayoutInflater inflater;
    Context context;
    int arr[];

    // 只保留需要的构造函数,提前初始化LayoutInflater
    public Adapter_Category(Context context, int[] arrlist){
        this.context = context;
        this.arr = arrlist;
        inflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return arr.length;
    }

    @Override
    public Object getItem(int position) {
        // 返回对应位置的图片资源ID,方便后续使用
        return arr[position];
    }

    @Override
    public long getItemId(int position) {
        // 返回当前位置作为item的ID
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            // 传入父容器并设置attachToRoot为false,确保布局参数正确
            convertView = inflater.inflate(R.layout.single_categories, parent, false);
        }
        ImageView imageView = convertView.findViewById(R.id.imageView);
        imageView.setImageResource(arr[position]);
        return convertView;
    }
}

额外检查项

  • 确认single_categories.xml中的ImageView的id确实是imageView,并且宽高设置合理(比如用wrap_content、固定尺寸,避免设置为0dp却没添加约束)。
  • 确认drawable目录下存在android1到android6这些图片文件,文件名拼写正确,且没有放在仅高版本可用的drawable子目录(比如drawable-v24)中。

内容的提问来源于stack exchange,提问作者Đăng Minh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 19:37:44