使用Volley时RecyclerViewAdapter点击跳转新Activity图片不显示问题求助
问题根因
- 你在Adapter中通过Intent传递的
imagename是字符串类型(对应实体类DisplayUser里的image字段,是存储服务器图片文件名的字符串),但在DetailsActivity中错误使用getIntExtra()取值,类型不匹配只能拿到默认值0,调用setImageResource(0)自然不会显示任何图片。 - 你注释掉的Glide加载逻辑才是适配你场景的正确写法,
setImageResource()仅用于加载APK内置的drawable本地资源,无法加载你存放在服务器的网络图片。
修复方案
直接替换DetailsActivity中onCreate方法里的图片加载代码即可:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_details); img = findViewById(R.id.desc_img); tv1 = findViewById(R.id.desc_header); tv2 = findViewById(R.id.desc_desc); // 修复后的图片加载逻辑 String imageName = getIntent().getStringExtra("imagename"); Glide.with(this) .load("http://10.0.2.2/volley/images/" + imageName) .into(img); tv1.setText(getIntent().getStringExtra("header")); tv2.setText(getIntent().getStringExtra("desc")); }
额外注意事项
- 确认
AndroidManifest.xml中已添加网络权限:<uses-permission android:name="android.permission.INTERNET" /> - 如果你测试用的系统版本高于Android 9(API 28),系统默认禁止明文HTTP请求,需要在manifest的
application标签添加android:usesCleartextTraffic="true"属性,或者将服务端地址升级为HTTPS。
内容的提问来源于stack exchange,提问作者Manab Gogoi
相关产品推荐
相关产品推荐

