Mvp page swiperefreshlayoutlibrary + recyclerview + refresh loading + OK,
//////////// Baseactivitypackage com. lbs. mvpchaunshuju. activity; import android. OS. bundle; import android. support. annotation. nullable; import android. support. v7.app. appCompatActivity;/*** author: Created by WangZhiQiang on 2018/3/1. */public abstract class BaseActivity Extends AppCompatActivity {private T presenter; @ Override protected void onCreate (@ Nullable Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (getLayoutId (); presenter = getPresenter (); initView (); getDate ();} protected abstract void getDate (); protected abstract void initView (); public abstract int getLayoutId (); public abstract T getPresenter ();} // MainActivitypackage com. lbs. mvpchaunshuju. activity; import android. OS. handler; import android. support. v7.widget. gridLayoutManager; import android. support. v7.widget. recyclerView; import android. widget. toast; import com. bawei. swiperefreshlayoutlibrary. swipyRefreshLayout; import com. bawei. swiperefreshlayoutlibrary. swipyRefreshLayoutDirection; import com. lbs. mvpchaunshuju. loginAdapter; import com. lbs. mvpchaunshuju. r; import com. lbs. mvpchaunshuju. bean. bean; import com. lbs. mvpchaunshuju. pesenters. loginPesenters; import com. lbs. mvpchaunshuju. view. onView; import java. util. arrayList; import java. util. list; public class MainActivity extends BaseActivity Implements OnView {private LoginPesenters loginPesenters; private int page = 1; private Handler handler = null; private SwipyRefreshLayout srl; private RecyclerView rv; private List List = null; @ Override protected void getDate () {loginPesenters. relevance (page) ;}@ Override protected void initView () {handler = new Handler (); srl = findViewById (R. id. srl); rv = findViewById (R. id. rv); GridLayoutManager gridLayoutManager = new GridLayoutManager (this, 2); rv. setLayoutManager (gridLayoutManager); // refresh effect color srl. setColorSchemeResources (R. color. col1_cent, R. color. colorPrimary, R. color. colorPrimaryDark, android. r. color. darker_gray); // The setting supports refresh and loading srl. setDirection (SwipyRefreshLayoutDirection ction. BOTH); // set the refresh listener srl. setOnRefreshListener (new SwipyRefreshLayout. onRefreshListener () {@ Override public void onRefresh (int index) {page = 1; loginPesenters. relevance (page); handler. postDelayed (new Runnable () {@ Override public void run () {srl. setRefreshing (false); }}, 2000) ;}@ Override public void onLoad (int index) {page ++; loginPesenters. relevance (page); handler. postDelayed (new Runnable () {@ Override public void run () {srl. setRefreshing (false); }}, 2000) ;}) ;}@ Override public int getLayoutId () {return R. layout. activity_main;} @ Override public LoginPesenters getPresenter () {loginPesenters = new LoginPesenters (this); return loginenterpess;} @ Override public void onData (Bean bean) {// returns the data to the adapter Toast. makeText (MainActivity. this, "obtained successfully" + bean. getResults (). get (1 ). getCreatedAt (), Toast. LENGTH_SHORT ). show (); // load the List by PAGE Results = bean. getResults (); if (page = 1) {list = new ArrayList <> ();} list. addAll (results); LoginAdapter loginAdapter = new LoginAdapter (this, list); rv. setAdapter (loginAdapter) ;}///// // Apipackage com. lbs. mvpchaunshuju. api;/*** author: Created by WangZhiQiang on 2018/3/1. */public class Api {public static String URL = "https://gank.io/api/data ";} //// // Bean // This is omitted
https://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/1
JsonBean //////// M layer moudlepackage com. lbs. mvpchaunshuju. moudles; import android. OS. handler; import android. OS. message; import com. google. gson. gson; import com. lbs. mvpchaunshuju. api. api; import com. lbs. mvpchaunshuju. bean. bean; import java. io. IOException; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response;/*** author: Created by WangZhiQi Ang on 2018/3/1. */public class LoginMoudle {private CallBackData callBackData; public interface CallBackData {void backData (Bean bean);} public void setOnCallBackData (CallBackData callBackData) {this. callBackData = callBackData;} private Handler handler = new Handler () {@ Override public void handleMessage (Message msg) {super. handleMessage (msg); switch (msg. what) {case 0: Bean bean = (Bean) Msg. obj; if (callBackData! = Null) {callBackData. backData (bean) ;}break ;}}; public void getServerData (int page) {OkHttpClient okHttpClient = new OkHttpClient (); Request build = new Request. builder (). url (Api. URL + "% E7 % A6 % 8F % E5 % 88% A9/10/" + page ). build (); Call call = okHttpClient. newCall (build); call. enqueue (new Callback () {@ Override public void onFailure (Call call, IOException e) {}@ Override public void onResponse (Call call, Response response) throws IOException {String string = response. body (). string (); Gson gson = new Gson (); Bean bean = gson. fromJson (string, Bean. class); Message msg = new Message (); msg. what = 0; msg. obj = bean; handler. sendMessage (msg) ;}}}//// // p-layer loginpesenterspackage com. lbs. mvpchaunshuju. pesenters; import com. lbs. mvpchaunshuju. bean. bean; import com. lbs. mvpchaunshuju. moudles. loginMoudle; import com. lbs. mvpchaunshuju. view. onView;/*** author: Created by WangZhiQiang on 2018/3/1. */public class LoginPesenters {private LoginMoudle loginMoudle; private OnView onView; public LoginPesenters (OnView onView) {this. onView = onView; loginMoudle = new LoginMoudle ();} public void relevance (int page) {loginMoudle. getServerData (page); loginMoudle. setOnCallBackData (new LoginMoudle. callBackData () {@ Override public void backData (Bean bean) {onView. onData (bean) ;}}}//// // V layer onViewpackage com. lbs. mvpchaunshuju. view; import com. lbs. mvpchaunshuju. bean. bean;/*** author: Created by WangZhiQiang on 2018/3/1. */public interface OnView {void onData (Bean bean);} // adapter package com. lbs. mvpchaunshuju; import android. content. context; import android. support. v7.widget. recyclerView; import android. view. layoutInflater; import android. view. view; import android. view. viewGroup; import android. widget. imageView; import android. widget. textView; import com. lbs. mvpchaunshuju. bean. bean; import com. squareup. picasso. picasso; import java. util. list;/*** author: Created by WangZhiQiang on 2018/3/1. */public class LoginAdapter extends RecyclerView. adapter {Context context; List List; public LoginAdapter (Context context, List List) {this. context = context; this. list = list ;}@ Override public MyViewHolder onCreateViewHolder (ViewGroup parent, int viewType) {View view = LayoutInflater. from (context ). inflate (R. layout. item, parent, false); MyViewHolder holder = new MyViewHolder (view); return holder ;}@ Override public void onBindViewHolder (MyViewHolder holder, int position) {Bean. resultsBean resultsBean = list. get (position); // holder. TV _title.setText (resultsBean. getSource (); // Picasso. with (context ). load (resultsBean. getUrl ()). placeholder (R. mipmap. ic_launcher ). into (holder. iv); String source = resultsBean. getSource (); String url = resultsBean. getUrl (); holder. TV _title.setText (source); // placeholder first loads the occupied bitmap to avoid image dislocation Picasso. with (context ). load (url ). placeholder (R. mipmap. ic_launcher ). into (holder. iv) ;}@ Override public int getItemCount () {return list. size ();} public class MyViewHolder extends RecyclerView. viewHolder {private final TextView TV _title; private final ImageView iv; public MyViewHolder (View view) {super (view); TV _title = view. findViewById (R. id. TV _title); iv = view. findViewById (R. id. iv) ;}}/// // activity_main //////// Item_View /////////// permission .. ,. //// // You must depend on compile 'com. squareup. okio: 1.5.0 '// the dependency of a later version can see the multi-External interceptor compile 'com. squareup. okhttp3: okhttp: 3.4.2 'compute' com. squareup. picasso: 2.5.1 'compile 'com. squareup. okhttp3: logging-interceptor: 3.4.1 'compile 'com. android. support: recyclerview-v7: 26 + 'compile 'com. google. code. gson: 2.2.4 'Implementation project (': swiperefreshlayoutlibrary ')