public class Api { // http://api.tianapi.com/nba/?key=71e58b5b2f930eaf1f937407acde08fe&num=10 public static final String UYT="http://api.tianapi.com/"; public static final String key="71e58b5b2f930eaf1f937407acde08fe";}
public interface ApiService { @POST Observable<News> getDatas(@Url String url, @QueryMap Map<String, String> map); }public interface Imodel { void RequestSuccess(String url,String key,int num,Onselect onselect); }
public interface Onselect { void dataSuccess(List<News.NewslistBean> list); void dataError(String s); }public class model implements Imodel{@Override public void RequestSuccess(String url, String key, int num, final Onselect onselect) { Map<String, String> map = new HashMap<>(); map.put("key",key); map.put("num",num+""); Retrofit retrofit = new Retrofit.Builder() .baseUrl(url) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); ApiService apiService = retrofit.create(ApiService.class); Observable<News> datas = apiService.getDatas("nba/", map); datas.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<News>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(News news) { List<News.NewslistBean> newslist = news.getNewslist(); onselect.dataSuccess(newslist); } }); } }public class presenter { Imodel imodel; Iview iview; public presenter(Iview iview) { this.iview = iview; imodel = new model(); } public void getOk(String url, String key, int num) { imodel.RequestSuccess(url, key, num, new Onselect() { @Override public void dataSuccess(List<News.NewslistBean> list) { iview.showSuccess(list); } @Override public void dataError(String s) { } }); } }
public interface Iview { void showSuccess(List<News.NewslistBean> list); void showError(String s); }
public class BaseApplication extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); } }public class MyAdpater extends RecyclerView.Adapter { List<News.NewslistBean> list; Context context; public MyAdpater(List<News.NewslistBean> list, Context context) { this.list = list; this.context = context; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false); return new MyViewHolder(inflate); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { MyViewHolder myViewHolder = (MyViewHolder) holder; myViewHolder.textView.setText(list.get(position).getTitle()); Uri imgUrl = Uri.parse(list.get(position).getPicUrl()); // SimpleDraweeView urlImg = (SimpleDraweeView) findViewById(R.id.sdv_image_url); myViewHolder.simpleDraweeView.setImageURI(imgUrl); } @Override public int getItemCount() { return list.size(); } class MyViewHolder extends RecyclerView.ViewHolder { private final TextView textView; private final SimpleDraweeView simpleDraweeView; public MyViewHolder(View itemView) { super(itemView); textView = itemView.findViewById(R.id.text); simpleDraweeView = itemView.findViewById(R.id.sdv_image); } } }public class MainActivity extends AppCompatActivity implements Iview{ private RecyclerView recyclerView; private LinearLayoutManager linearLayoutManager; private text.bwei.com.wuzijing1205.presenter.presenter presenter; int num=10; private MyAdpater myAdpater; private SwipeRefreshLayout swipeRefreshLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.recycler); swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swip); presenter = new presenter(this); presenter.getOk(Api.UYT,Api.key,num); } @Override public void showSuccess(final List<News.NewslistBean> list) { linearLayoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(linearLayoutManager); myAdpater = new MyAdpater(list, this); recyclerView.setAdapter(myAdpater); swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { presenter.getOk(Api.UYT,Api.key,num++); myAdpater.notifyDataSetChanged(); swipeRefreshLayout.setRefreshing(false); } }); recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); int lastVisibleItemPosition = linearLayoutManager.findLastVisibleItemPosition(); if (lastVisibleItemPosition == list.size() - 1) { presenter.getOk(Api.UYT,Api.key,num++); myAdpater.notifyDataSetChanged(); } } }); } @Override public void showError(String s) { } }