mode http包
public interface HttpCallback {
void onSuccess(DataBeans dataBeans);
void onFail(int errCode, String errMsg);
}
-------------------------------------
public class HttpUntils implements Callback {
private static HttpUntils INSTANCE;public static HttpUntils getInsatance() {
if (INSTANCE == null) {
INSTANCE = new HttpUntils();
}
return INSTANCE;
}
private HttpCallback mhttpCallback;
public String doPost(String path, HttpCallback httpCallback) {
this.mhttpCallback = httpCallback;
OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
FormBody formBody = new FormBody.Builder().build();
Request request = new Request.Builder()
.url(path)
.post(formBody)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(this);
return "";
}
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
//Log.e("Message", string + "=====");
Gson gson = new GsonBuilder().create();
DataBeans dataBeans = gson.fromJson(string, DataBeans.class);
// Log.e("my", dataBeans.getData().get(0).getNews_title() + "=====");
mhttpCallback.onSuccess(dataBeans);
}
}
----------------------------------
presenter包
public class BasePresenter<V extends IBaseView> {
private V iBaseView;
public void attachView(V iBaseView) {
this.iBaseView = iBaseView;
}
public V getView() {
return iBaseView;
}
public void detachView(V iBaseView) {
this.iBaseView = null;//避免内存泄漏
}
}
---------------------------
public class MainPresenter extends BasePresenter<IMainView> {
private final HttpUntils httpUntils;public MainPresenter() {
httpUntils = HttpUntils.getInsatance();
}
public void loadDataFromServer(String path) {
httpUntils.doPost(path, new HttpCallback() {
@Override
public void onSuccess(DataBeans dataBeans) {
Log.e("myMessage===", dataBeans.getData().get(0).getNews_summary() + "");
getView().onSuccess(dataBeans);
}
@Override
public void onFail(int errCode, String errMsg) {
}
});
}
}
------------------------------------
View包 Activity
public abstract class BaseActivity<P extends BasePresenter> extends AppCompatActivity implements IBaseView {
public P basePresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_base);
initView();
initBaseView();
initData();
}
private void initBaseView() {
basePresenter = setPresenter();
if (basePresenter != null) {
basePresenter.attachView(this);
} else {
try {
throw new Exception("出错了");
} catch (Exception e) {
e.printStackTrace();
}
}
}
protected abstract P setPresenter();
protected abstract void initData();
protected abstract void initView();
}
------------------------------------
public class MainActivity extends BaseActivity<MainPresenter> implements IMainView, SwipeRefreshLayout.OnRefreshListener {
private RecyclerView recycler;
private RecyclerAdapter recyclerAdapter;
List<DataBeans.DataBean> list = new ArrayList<DataBeans.DataBean>();
private SwipeRefreshLayout swipe;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
super.onCreate(savedInstanceState);
}
@Override
protected MainPresenter setPresenter() {
return new MainPresenter();
}
@Override
protected void initView() {
recycler = findViewById(R.id.recycler);
//设置布局管理
recycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
swipe = findViewById(R.id.swipe);
//设置颜色
//swipe监听
swipe.setOnRefreshListener(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
basePresenter.detachView(this);
}
@Override
public void onSuccess(DataBeans s) {
Log.e("myMessage", "AAAAAA" + s.getData().get(0).getNews_title());
List<DataBeans.DataBean> data = s.getData();
list.addAll(data);
recyclerAdapter = new RecyclerAdapter(this, list);
recycler.setAdapter(recyclerAdapter);
recyclerAdapter.notifyDataSetChanged();
}
@Override
protected void initData() {
String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
basePresenter.loadDataFromServer(path);
}
@Override
public void onRefresh() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
swipe.setRefreshing(false);//停止刷新
}
}, 2000);
}
}
-----------------------------------
adapter页面
public class RecyclerAdapter extends RecyclerView.Adapter {
private Context context;
private List<DataBeans.DataBean> listAll;
public RecyclerAdapter(Context context, List<DataBeans.DataBean> listAll) {
this.context = context;
this.listAll = listAll;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.item_layout, null);
return new MyHolderView(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
MyHolderView viewHolder = (MyHolderView) holder;
viewHolder.name.setText(listAll.get(position).getNews_title());
}
@Override
public int getItemCount() {
return listAll.size();
}
private class MyHolderView extends RecyclerView.ViewHolder {
private TextView name;
public MyHolderView(View itemView) {
super(itemView);
name = itemView.findViewById(R.id.name);
}
}
}
-----------------------------
interf包
public interface IBaseView {
}
--------------------------------
public interface IMainView extends IBaseView {
void onSuccess(DataBeans s);
}