//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'