package com.example.administrator.searchpicturetool.model;
import android.content.Context;
import com.example.administrator.searchpicturetool.model.bean.Banner;
import com.example.administrator.searchpicturetool.model.bean.NewBanner;
import com.jude.utils.JUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.listener.FindListener;
import rx.Subscriber;
/**
* Created by wenhuaijun on 2016/2/15 0015.
*/
public class BannerModel {
public static void getBanners(Context context, final Subscriber<List<NewBanner>> subscriber){
BmobQuery<NewBanner> query = new BmobQuery<>();
query.findObjects(context, new FindListener<NewBanner>() {
@Override
public void onSuccess(List<NewBanner> list) {
if(list.size()<=4){
subscriber.onNext(list);
}else{
List<NewBanner> newLists = new ArrayList<>();
int[] range =randomCommon(0, list.size()-1, 4);
for(int i:range){
newLists.add(list.get(i));
}
subscriber.onNext(newLists);
}
}
@Override
public void onError(int i, String s) {
subscriber.onError(new Throwable("on error"));
}
});
}
//[min,max]
public static int[] randomCommon(int min, int max, int n) {
int len = max - min + 1;
if (max < min || n > len) {
return null;
}
//初始化给定范围的待选数组
int[] source = new int[len];
for (int i = min; i < min + len; i++) {
source[i - min] = i;
}
int[] result = new int[n];
Random rd = new Random();
int index = 0;
for (int i = 0; i < result.length; i++) {
//待选数组0到(len-2)随机一个下标
index = Math.abs(rd.nextInt() % len--);
//将随机到的数放入结果集
result[i] = source[index];
//将待选数组中被随机到的数,用待选数组(len-1)下标对应的数替换
source[index] = source[len];
}
return result;
}
}