使用MVP@post拼接参数请求数据

来源:互联网 发布:中国户外刀代工知乎 编辑:程序博客网 时间:2024/06/04 18:19
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) {    }}



原创粉丝点击