//adapter
package adapter;
import android.content.Context;
import android.support.annotation.NonNull;
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.bumptech.glide.Glide;
import com.example.w.lianxi78.MainActivity;
import com.example.w.lianxi78.R;
import java.util.List;
import bean.UserBean;
public class Adapter extends RecyclerView.Adapter<Adapter.TextHolder>{
Context mContext;
List<UserBean.DataBean> UserBean;
//构造函数
public Adapter(Context mcontext,List<UserBean.DataBean> UserBean) {
this.UserBean=UserBean;
this.mContext=mcontext;
}
//创建视图
@NonNull
@Override
public TextHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//获取子布局
LayoutInflater inflater = LayoutInflater.from(mContext);
View view = inflater.inflate(R.layout.item_layout, parent, false);
return new TextHolder(mContext,view);
}
//绑定数据和视图
@Override
public void onBindViewHolder(TextHolder textHolder, int position) {
String mtext = UserBean.get(position).getTitle();
String mpath = UserBean.get(position).getImages().split("\\|")[0];
textHolder.bindText(mtext,mpath);
}
//统计条目数量
@Override
public int getItemCount() {
return UserBean.size();
}
//通过内部类
public static class TextHolder extends RecyclerView.ViewHolder{
private TextView mTextView;
private ImageView mImageView;
private Context context;
public TextHolder(Context mcontext,View itemView) {
super(itemView);
this.context=mcontext;
mTextView = (TextView) itemView.findViewById(R.id.text_title);
mImageView=(ImageView) itemView.findViewById(R.id.image_view);
}
public void bindText(String mText,String path){
mTextView.setText(mText);
Glide.with(context).load(path).into(mImageView);
}
}
}
//view-maintivity
package com.example.w.lianxi78;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.ScrollView;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
import java.util.List;
import adapter.Adapter;
import bean.UserBean;
import presener.MainPresenerImpl;
import view.MainView;
import view.MyView;
public class MainActivity extends AppCompatActivity implements MainView {
private MyView my_view;
private PullToRefreshScrollView pull_refush_view;
private RecyclerView recycle_view;
private MainPresenerImpl presener;
private List<UserBean.DataBean> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pull_refush_view = findViewById(R.id.pull_refush_view);
recycle_view = findViewById(R.id.recycle_view);
my_view = findViewById(R.id.my_view);
presener = new MainPresenerImpl(this);
presener.getdata();
recycle_view.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
pull_refush_view.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {
presener.getdata();
pull_refush_view.onRefreshComplete();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {
presener.getdata();
pull_refush_view.onRefreshComplete();
}
});
my_view.setCallback(new MyView.MyViewCallback() {
@Override
public void onsearch(String context) {
Intent intent = new Intent(MainActivity.this, TwoActivity.class);
startActivity(intent);
}
});
}
@Override
public void SuccessCallback(UserBean mbean) {
data = mbean.getData();
if (data!=null) {
Log.e("gg", "SuccessCallback: "+mbean.toString() );
Adapter adapter = new Adapter(MainActivity.this, data);
recycle_view.setAdapter(adapter);
pull_refush_view.onRefreshComplete();
}
}
@Override
public void failerCallback(int code) {
}
}
//model
package model;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import com.google.gson.Gson;
import java.io.IOException;
import bean.UserBean;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class MainModelImpl {
private static final String TAG ="ModelHome" ;
private MainModel mainModelListener;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what == 0){
mainModelListener.SuccessCallback(userBean);
}
}
};
private UserBean userBean;
public void getdata(
final MainModel mainModelListener){
this.mainModelListener = mainModelListener;
OkHttpClient build = new OkHttpClient.Builder().build();
final Request request = new Request.Builder().url("https://www.zhaoapi.cn/product/getProducts?pscid=1").build();
build.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
mainModelListener.FailerCallback(1);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
Log.i(TAG, "onResponse: "+string);
Gson gson = new Gson();
userBean = gson.fromJson(string, UserBean.class);
handler.sendEmptyMessage(0);
}
});
}
}
//presenter
package presener;
import bean.UserBean;
import model.MainModel;
import model.MainModelImpl;
import view.MainView;
public class MainPresenerImpl implements MainPresener{
private MainView mainView;
private MainModelImpl mainmodelimpl;
public MainPresenerImpl(MainView mainView) {
this.mainView = mainView;
this.mainmodelimpl = new MainModelImpl();
}
public void getdata(){
mainmodelimpl.getdata(new MainModel() {
@Override
public void SuccessCallback(UserBean Mbean) {
mainView.SuccessCallback(Mbean);
}
@Override
public void FailerCallback(int code) {
mainView.failerCallback(code);
}
});
}
@Override
public void destroys() {
if (mainView!=null) {
mainView=null;
}
}
}
//权限
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'com.github.bumptech.glide:glide:4.6.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.6.1'
implementation 'com.github.userswlwork:pull-to-refresh:1.0.0'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1'