基于Bmob平台进行从服务器获取图片数据(url)的操作,并以瀑布流得形式显示图片

            最近一直在学习基于Bmob平台的数据交互,网上找了很多例子,但很多因为各种原因没有调试出来。后来转变学习思路,从获取数据开始学起,通过查阅文档,逛帖子找资料,学会了如何获取Bmob服务器端的图片数据,并通过获取其url来获取图片并以瀑布流得形式显示出来。参考的文章如http://www.cnblogs.com/jianrong-zheng/p/3449629.html,http://blog.csdn.net/hester_hester/article/details/51934143通过学习这两篇我感觉收获是最

大的,下面放效果图:

点击“图片“,会获取图片数据并显示:

 

       Bmob文档里有查询数据的案例,这里不仔细论述,直接借用代码格式。上面是效果图,先来看看Bmob平台的结构图:我在这里主要获取的是QiangYu表Contentfigureurl这一列数据,获取jpg格式图片,当然你有精力的话可以获取objectId列以及其他数据表的数据。

      Bmob开发文档有数据查询的具体案例,这里不做研究,这里直接借用代码格式:


BmobQuery<QiangYu> query1 = new BmobQuery<QiangYu>();
    query1.findObjects(this, new FindListener<QiangYu>() {
           @Override
            public void onError(int code, String msg) {
           // TODO Auto-generated method stub
           Log.i("查询失败:",msg);
           }
           @Override
           Log.i("查询成功:共",object.size()+"条数据。");
           public void onSuccess(List<QiangYu> object) {
           // TODO Auto-generated method stub
          int j=object.size();
          System.out.print(j+"\n");

       由于图片数据有很多条,我们主要获取的是图片所在的路径,即Bmob平台分配给图片的url,用代码格式:

String imgs = qiangyu.getContentfigureurl().getUrl();//获取图片url

后来获取的String数据格式如:M02/F9/0E/oYYBAFYV0dqAPYSUAABO6uI5wuY049.jpg,这不完整,我们需自己再添加:http://file.bmob.cn/,这样获取的url即为:

http://file.bmob.cn/M02/F9/0E/oYYBAFYV0dqAPYSUAABO6uI5wuY049.jpg

       一开始我用的是String[]来集中获取的每一条地址,但感觉不是很好,后来用HashMap来获取,效率较高,但后面还要涉及二维数组转为一维数组来取得每一条url的问题。这里是map的应用代码:

ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();  
int i=0;
HashMap<String, Object> map = new HashMap<String, Object>();
 
for (QiangYu qiangyu:object) {
  
              if(qiangyu.getContentfigureurl() != null){
              //文件名称
              //qiangyu.getContentfigureurl().getFilename();
              //文件地址
              String imgs = qiangyu.getContentfigureurl().getUrl();
              map.put(""+i,"http://file.bmob.cn/"+qiangyu.getContentfigureurl().getUrl());
             
              i++;
}//这里的i对后面维数转化有用

下图是获取的url组,用System.out.println();输出显示结果:

接下来是数组转化,这样方便瀑布流图片显示时获取每一条url:

Set<String> set = map.keySet();
 Iterator<String> it = set.iterator();
 String[][] ss = new String[map.size()][2];
 for (i = 0; i < map.size(); i++) {
  ss[i][0] = it.next();
  ss[i][1] = (String) map.get(ss[i][0]);
  System.out.print(ss[i][1]+"\n");
}
 System.out.println(ss.length);
 String [] urls = new String[(ss.length)*2];
       for ( i = 0; i < ss.length; i++) {
           for ( j = 0; j < ss[i].length; j++) {
               urls[i+j] = ss[i][j+1];
               System.out.println(urls[i+j]);       
               j++;
           }
       }

       参数传递给瀑布流显示所需要的Activity里的参数时,网上的方法很多,使用了多种,发现下面这个方法比较好(当然我的情况是这样):

       数据传输口                    //用Bundle携带数据  

Bundle bundle=new Bundle();
       //传递name参数为urls
       bundle.putStringArray("name", urls);       
//String section =String.valueOf(data.toString());get每一行的数据
       Intent intent =new Intent(MainActivity.this,MainActivity1.class);
       intent.putExtras(bundle);  
       startActivity(intent);

       数据接口代码:                                  

 //新页面接收数据
 Bundle bundle = this.getIntent().getExtras();
 //接收name值
 String[] urls= bundle.getStringArray("name");

    以上就是实现这个获取显示的功能的主要代码,大致过程就是这样,瀑布流的过程就不详细展开了,可以参考我看的那两篇文章,里面有具体代码,可以实现。

    贴上我的代码,时间比较久了,有问题可能要自己改:http://download.csdn.net/download/xuanwo11/9826241。

    后续有兴趣可以学习Bmob的一些案例。有问题可以私信,作者水平有限,纯属爱好,请见谅哦。

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值