前段時間做了一個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了 至於爲何會解決呢.....還在研究中