package com.liyu.fakeweather.ui.girl; import com.liyu.fakeweather.model.Girl; import com.liyu.fakeweather.service.GirlService; import com.liyu.fakeweather.ui.base.BaseGirlsListFragment; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; import java.util.ArrayList; import java.util.List; import rx.Observable; import rx.Observer; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Func1; import rx.schedulers.Schedulers; /** * Created by liyu on 2016/12/13. */ public class MzituZiPaiFragment extends BaseGirlsListFragment { @Override protected void getGirlFromServer() { showRefreshing(true); String url = getArguments().getString("url") + "/comment-page-" + currentPage + "#comments"; subscription = Observable.just(url).subscribeOn(Schedulers.io()).map(new Func1<String, List<Girl>>() { @Override public List<Girl> call(String url) { List<Girl> girls = new ArrayList<>(); try { Document doc = Jsoup.connect(url).timeout(10000).get(); Element total = doc.select("div.postlist").first(); Elements items = total.select("li"); for (Element element : items) { Girl girl = new Girl(element.select("img").first().attr("src")); girls.add(girl); } } catch (IOException e) { e.printStackTrace(); } return girls; } }).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<List<Girl>>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { isLoading = false; showRefreshing(false); } @Override public void onNext(List<Girl> girls) { currentPage++; sendCount = girls.size(); receivedCount = 0; GirlService.start(getActivity(), MzituZiPaiFragment.this.getClass().getName(), girls); } }); } }