[项目]备份手机相册到私有服务器 Day 15

在Day 14 服务端生成了缩略图,今天实现客户端显示缩略图,一个ListView,加上ImageView即可实现效果,当然啦页面依旧是很简陋,只是实现了功能,下面是核心代码,从服务器获取到照片列表后在分别将缩略图也从服务器请求下来,绑定到ImageView上。完整代码参考TaoAlbum,GitHub上的代码。

ServerAlbumListActivity.onSuccess

@Override
    public void onSuccess(String service, ResultData ret) {
        Log.i(TAG,"service="+service+".onSuccess");
        if (ServiceHelper.PHOTO_LIST_KEY.equals(service)){
            if (ret != null && ret.isSuccess()) {
                if (ret.getData()!=null){
                    resList = ( List<ResourceDto>)ret.getData();
                    if (resList!=null && !resList.isEmpty()) {
                        list = new ArrayList();
                        for (final ResourceDto resDto : resList) {
                            if (resDto.getPreview()==null || "".equals(resDto.getPreview())){
                                continue;
                            }
                            // Get preview image
                            ServiceHelper.showPhoto(resDto.getFilePath()+"/"+resDto.getPreview(),new ServiceHelper.ServiceCallback(){
                                @Override
                                public void onSuccess(String service, ResultData ret) {
                                    if (ServiceHelper.SHOW_PHOTO_KEY.equals(service)  && ret!=null
                                            && ret.isSuccess() && ret.getData()!=null) {
                                        Map<String, Object> map = new HashMap();
                                        map.put("fileName",resDto.getFileName());
                                        map.put("filePath",resDto.getFilePath());
                                        Bitmap bitmap = (Bitmap)ret.getData();
                                        map.put("imageView",bitmap );
                                        list.add(map);
                                    }
                                }
                                @Override
                                public void onFailure(String service, ResultData ret) {

                                }
                            });
                        }
                        if (list!=null && !list.isEmpty() ){
                            final SimpleAdapter adapter = new SimpleAdapter(this,list,R.layout.activity_album_ui_img_item,
                                    new String[] { "imageView" },new int[] { R.id.album_ui_img_preview});
                            adapter.setViewBinder(new ViewBinder() {
                                public boolean setViewValue(View view, Object data,
                                                          String textRepresentation) {
                                  if(view instanceof ImageView && data instanceof Bitmap){
                                      ImageView iv = (ImageView) view;
                                      Bitmap bm = (Bitmap) data;
                                      iv.setImageBitmap(bm);
                                      iv.setMaxWidth(bm.getWidth());
                                      iv.setMaxHeight(bm.getHeight());
                                      return true;
                                  }else
                                      return false;
                                }
                            });
                            context.runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    photoListView.setAdapter(adapter);
                                }
                            });
                        }
                    }
                }
            }
        }
    }

截图

到这里,这个项目的基本功能也算是完整了,当然了要是想继续加功能还是可以加的,接下来要开始一个新的项目,也不完全算是新项目,就是给现在的照片服务器加一个新的客户端,我选择React来实现,现在WEB开发,前后端分离已经成为了主流趋势,而且它的优点也非常突出,比如前后端的开发和部署可以完全分离。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值