工具类:
package com.example.wuyizuoye.util;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.example.wuyizuoye.MyApp;
public class VolleyHttp {
private static VolleyHttp volleyHttp=new VolleyHttp();
//饿汉式
public static VolleyHttp getInstance(){
return volleyHttp;
}
//请求数据
public void getVolley(String url, final VolleyCallBack callBack){
StringRequest stringRequest= new StringRequest(StringRequest.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
callBack.success(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
callBack.error();
}
});
stringRequest.setTag("volley");
MyApp.getVolley().add(stringRequest);
}
//接口
public interface VolleyCallBack{
void success(String names);
void error();
}
}
MyApp类:
package com.example.wuyizuoye;
import android.app.Application;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
public class MyApp extends Application {
private static RequestQueue requestQueue;
@Override
public void onCreate() {
super.onCreate();
requestQueue = Volley.newRequestQueue(getApplicationContext());
}
public static RequestQueue getVolley(){
return requestQueue;
}
}
契约类:
package com.example.wuyizuoye.showmvp;
public interface ContractInteface {
//view
interface IShowView{
//展示
void getPreDa(String data);
}
//model
interface IShowModel{
//方法
void getModelDa(String keyword,ModelCallBack callBack);
interface ModelCallBack{
void onSuccess(String name);
void onFailed();
}
}
//presenter
interface IShowPresenter{
void getSearchDa(String keyword);
void attach(IShowView view);
void detach();
}
}
package com.example.wuyizuoye.showmvp;
import com.example.wuyizuoye.util.VolleyHttp;
import java.net.URLEncoder;
public class MyModel implements ContractInteface.IShowModel {
String url="http://172.17.8.100/small/commodity/v1/findCommodityByKeyword";
@Override
public void getModelDa(String keyword, final ModelCallBack callBack) {
VolleyHttp.getInstance().getVolley(url + "?keyword=" + URLEncoder.encode(keyword) + "&page=" + 1 + "&count=" + 10, new VolleyHttp.VolleyCallBack() {
@Override
public void success(String names) {
callBack.onSuccess(names);
}
@Override
public void error() {
callBack.onFailed();
}
});
}
}
package com.example.wuyizuoye.showmvp;
public class MyPresenter implements ContractInteface.IShowPresenter {
ContractInteface.IShowView view;
MyModel myModel;
@Override
public void getSearchDa(String keyword) {
myModel.getModelDa(keyword, new ContractInteface.IShowModel.ModelCallBack() {
@Override
public void onSuccess(String name) {
view.getPreDa(name);
}
@Override
public void onFailed() {
}
});
}
@Override
public void attach(ContractInteface.IShowView view) {
this.view=view;
myModel=new MyModel();
}
@Override
public void detach() {
if (view!=null){
view=null;
}
if (myModel!=null){
myModel=null;
}
System.gc();
}
}
MainActivity类:
package com.example.wuyizuoye;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.example.wuyizuoye.adapter.MyAdapter;
import com.example.wuyizuoye.bean.ShowBean;
import com.example.wuyizuoye.showmvp.ContractInteface;
import com.example.wuyizuoye.showmvp.MyPresenter;
import com.example.wuyizuoye.view.MyLiu;
import com.google.gson.Gson;
import java.util.List;
public class MainActivity extends AppCompatActivity implements ContractInteface.IShowView {
ContractInteface.IShowPresenter presenter;
private RecyclerView recy_view;
private EditText edit_text;
private TextView search;
private MyLiu my_liu;
private TextView textView;
private MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
recy_view = findViewById(R.id.recy_view);
edit_text = findViewById(R.id.edit_text);
search = findViewById(R.id.search);
my_liu = findViewById(R.id.my_liu);
GridLayoutManager gridLayoutManager=new GridLayoutManager(this,2);
recy_view.setLayoutManager(gridLayoutManager);
presenter=new MyPresenter();
presenter.attach(this);
presenter.getSearchDa("手机");
//点击搜索
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = edit_text.getText().toString();
textView=new TextView(MainActivity.this);
textView.setText(s+" ");
my_liu.addView(textView);
}
});
my_liu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, textView.getText().toString(), Toast.LENGTH_SHORT).show();
String ss = edit_text.getText().toString();
presenter.getSearchDa(ss);
}
});
}
@Override
public void getPreDa(String data) {
Gson gson=new Gson();
final ShowBean showBean = gson.fromJson(data, ShowBean.class);
myAdapter=new MyAdapter(showBean,MainActivity.this);
recy_view.setAdapter(myAdapter);
myAdapter.setMyClick(new MyAdapter.MyClick() {
@Override
public void myonclick(int position) {
String masterPic = showBean.getResult().get(position).getMasterPic();
Intent intent = new Intent(MainActivity.this, ShowActivity.class);
intent.putExtra("cid",masterPic);
startActivity(intent);
}
});
}
}
适配器:
package com.example.wuyizuoye.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.wuyizuoye.R;
import com.example.wuyizuoye.bean.ShowBean;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Holder> {
MyClick myClick;
ShowBean showBean;
Context context;
public MyAdapter(ShowBean showBean, Context context) {
this.showBean = showBean;
this.context = context;
}
@NonNull
@Override
public Holder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View inflate = LayoutInflater.from(context).inflate(R.layout.grid, null);
return new Holder(inflate);
}
@Override
public void onBindViewHolder(@NonNull Holder holder, final int i) {
ShowBean.ResultBean resultBean = showBean.getResult().get(i);
holder.textView1.setText(resultBean.getCommodityName());
holder.textView2.setText(resultBean.getPrice());
Glide.with(context).load(resultBean.getMasterPic()).into(holder.imageView);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myClick.myonclick(i);
}
});
}
@Override
public int getItemCount() {
return showBean.getResult().size();
}
public class Holder extends RecyclerView.ViewHolder {
ImageView imageView;
TextView textView1,textView2;
public Holder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.view_image);
textView1=itemView.findViewById(R.id.view_texta);
textView2=itemView.findViewById(R.id.view_textb);
}
}
public void setMyClick(MyClick myClick){
this.myClick=myClick;
}
public interface MyClick{
void myonclick(int position);
}
}