mynamecsl 2018-06-12 05:59 采纳率: 58%
浏览 1287
已采纳

Gridview如何显示本地存储路径的图片

如下是我现在GridView加载图片和文字的方式,如果图片不在资源里面,存在手机本地路径,要怎么改才能加载图片。
自己试了试发现把map.put("img", img[i]);改成map.put("img", Uri.parse("file://" + file));就可以,直接把文件路径放进去。虽然我也不知道这样做的原理是什么,有人解惑么。

 public class MainActivity extends AppCompatActivity {

    private GridView grid_test;
    private List<Map<String,Object>> dataList;
    private SimpleAdapter simpleAdapter;
    private int[] img = {R.mipmap.ic_launcher_round,R.mipmap.ic_launcher,R.mipmap.ic_launcher_round, R.mipmap.ic_launcher,
            R.mipmap.ic_launcher_round,R.mipmap.ic_launcher,R.mipmap.ic_launcher_round,R.mipmap.ic_launcher,
            R.mipmap.ic_launcher_round,R.mipmap.ic_launcher,R.mipmap.ic_launcher_round,R.mipmap.ic_launcher,
            R.mipmap.ic_launcher_round,R.mipmap.ic_launcher,R.mipmap.ic_launcher_round,R.mipmap.ic_launcher,
            R.mipmap.ic_launcher_round,R.mipmap.ic_launcher,R.mipmap.ic_launcher_round,R.mipmap.ic_launcher,
            R.mipmap.ic_launcher_round,R.mipmap.ic_launcher,R.mipmap.ic_launcher_round,R.mipmap.ic_launcher};
    private  String[] imgName = {"1","2","3","4",
            "5","6","7","8",
            "9","10","11","12",
            "13","14","15","16",
            "17","18","19","20",
            "21","22","23","24"};


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        grid_test = (GridView) findViewById(R.id.grid_test);
        dataList = new ArrayList<Map<String, Object>>();
        simpleAdapter = new SimpleAdapter(this,getData(),R.layout.grid_item,
                new String[] {"img","txt"},new int[]{R.id.img_item,R.id.txt_item});
        grid_test.setAdapter(simpleAdapter);
    }

    private  List<Map<String,Object>> getData() {
        for (int i=0; i<img.length; i++) {
            Map<String,Object> map = new HashMap<String, Object>();
            map.put("img", img[i]);
            map.put("txt", imgName[i]);
            dataList.add(map);
        }

        return dataList;
    }
}
  • 写回答

7条回答 默认 最新

  • JabamiLight 2018-06-14 01:29
    关注

    这个很简单,如果改成map.put("img", Uri.parse("file://" + file)); SimpleAdatper绑定数据的时候会调用ImageView的setImageURI(),将你的uri传进去,
    ImageView会自动从文件里解析流还获取对应的Bitmap。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵