前段时间做了一个Demo,里面我尝试使用了一下Bmob后端云 , 但是在Web填充好数据后发现并不能成功拿到数据。纠缠一段时间后成功的解决。
话不多说, 第一步 导入Bmob依赖 在AndroidStudio中 : 进入后左侧点选SDK导入
第二步 (1)检查自己的JavaBean是否和后端的一致
(2)检查是否继承了BmobObject或BmobUser
第三步 记得要获取到与Bmob的连接
//提供以下两种方式进行初始化操作:
//第一:默认初始化
Bmob.initialize(this, "Your Application ID");
// 注:自v3.5.2开始,数据sdk内部缝合了统计sdk,开发者无需额外集成,传渠道参数即可,不传默认没开启数据统计功能
//Bmob.initialize(this, "Your Application ID","bmob"); 其实用这个就可以了
//第二:自v3.4.7版本开始,设置BmobConfig,允许设置请求超时时间、文件分片上传时每片的大小、文件的过期时间(单位为秒),
//BmobConfig config =new BmobConfig.Builder(this)
设置appkey
//.setApplicationId("Your Application ID")
请求超时时间(单位为秒):默认15s
//.setConnectTimeout(30)
文件分片上传时每片的大小(单位字节),默认512*1024
//.setUploadBlockSize(1024*1024)
文件的过期时间(单位为秒):默认1800s
//.setFileExpiration(2500)
//.build();
//Bmob.initialize(config);
}
然后 就是获取数据的时候了,我当时想法就是只用个List存储数据,传给适配器就ok了,但是......
每次都存储不到List中.. 经过Log发现都可以获取到,可是存储不到集合中..
于是乎 奉上解决方法:
我改用Map存放从后端搜索到的data ,用List存放该Mapprivate HashMap<String,String >mHashMap;
private List<Map<String,String>> mapList;
下面这是搜索并存到集合中( //Glide什么的可以自动忽略 ==)
mapList = new ArrayList<>();
query = new BmobQuery<Book>();
query.addWhereEqualTo("author_name", authorName);
query.findObjects(new FindListener<Book>() {
@Override
public void done(List<Book> list, BmobException e) {
if(e==null){
initArray(list.size());
for (Book book : list) {
mHashMap = new HashMap<>();
mHashMap.put("bookName",book.getBookName());
mHashMap.put("authorName",book.getAuthor_name());
mHashMap.put("imageUrl",book.getBook_image().getFileUrl());
Glide.with(context).load(book.getBook_image().getFileUrl()).preload();//预先缓存
mHashMap.put("bookClass",book.getBookClass());
mHashMap.put("bookIntro",book.getIntro());
mapList.add(mHashMap);
}
于是莫名其妙的可以已存储了
然后你就可以拿着list发给Adapter了 至于为何会解决呢.....还在研究中