activity是入口
package com.bawei.zhou1.activity;
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.widget.Toast;
import com.bawei.zhou1.R;
import com.bawei.zhou1.adapter.MyAdapter;
import com.bawei.zhou1.presenter.ShowPresenter;
import com.bawei.zhou1.view.ShowVoid;
import org.json.JSONArray;
public class ShowActivity extends AppCompatActivity implements ShowVoid {
private RecyclerView rel;
private ShowPresenter showPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
//找控件
rel = findViewById(R.id.rel);
//创建布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
//设置布局管理器
rel.setLayoutManager(linearLayoutManager);
//MVP
//实例化presenter
showPresenter = new ShowPresenter(this);
//关联p层
showPresenter.related();
}
@Override
public void view(JSONArray result) {
MyAdapter myAdapter = new MyAdapter(this,result);
rel.setAdapter(myAdapter);
myAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
@Override
public void OnClick(int i) {
Toast.makeText(ShowActivity.this, "第"+i+"个", Toast.LENGTH_SHORT).show();
}
@Override
public void OnLongClick(int i) {
Toast.makeText(ShowActivity.this, "长按事件", Toast.LENGTH_SHORT).show();
}
});
}
//销毁
@Override
protected void onDestroy() {
super.onDestroy();
showPresenter.detachView();
Log.i("xxx","销毁了");
}
}
把数据传到presenter
package com.bawei.zhou1.presenter;
import com.bawei.zhou1.activity.ShowActivity;
import com.bawei.zhou1.model.ShowModel;
import com.bawei.zhou1.view.ShowVoid;
import org.json.JSONArray;
import java.lang.ref.WeakReference;
/**
-
@author 王艺霏
-
@fileName ShowPresenter
-
@package com.bawei.zhou1.presenter
**/
public class ShowPresenter {private final ShowModel showModel;
private final ShowVoid showVoid;
private WeakReference tWeakReference;//在构造方法里实例化model
public ShowPresenter(ShowVoid view){
showModel = new ShowModel();
showVoid = view;
}//接收从activity传来的
public void related() {
//一个方法传到model
showModel.getGoods();
showModel.setOnShowLisenter(new ShowModel.OnShowLisenter() {
@Override
public void onShow(JSONArray result) {
showVoid.view(result);
}
});
}
//泄露
public void attachView(T t){
tWeakReference = new WeakReference<>(t);
}public void detachView(){
if (tWeakReference.get()!=null){
tWeakReference.clear();
tWeakReference=null;
}
}
}
在把数据传到model
package com.bawei.zhou1.model;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import com.bawei.zhou1.utils.OkHttpUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
-
@author 王艺霏
-
@fileName ShowModel
-
@package com.bawei.zhou1.model
**/
public class ShowModel {
//创建接口
public interface OnShowLisenter{
void onShow(JSONArray result);
}
//声明接口
public OnShowLisenter onShowLisenter;
//set接口
public void setOnShowLisenter(OnShowLisenter onShowLisenter){
this.onShowLisenter=onShowLisenter;
}
private String url =“http://172.17.8.100/small/commodity/v1/bannerShow”;
//handler
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
String json = (String) msg.obj;
try {
JSONObject jsonObject = new JSONObject(json);
JSONArray result = jsonObject.getJSONArray(“result”);
if (onShowLisenter!=null){
onShowLisenter.onShow(result);
}
} catch (JSONException e) {
e.printStackTrace();
}break; } }
};
//从p传来的
public void getGoods() {
OkHttpUtils.getInstance().doGet(url,new Callback() {
@Override
public void onFailure(Call call, IOException e) {} @Override public void onResponse(Call call, Response response) throws IOException { //得到响应码 String json = response.body().string(); Log.i("xxx",json); Message message = new Message(); message.what=0; message.obj=json; handler.sendMessage(message); } });
}
}
写适配器(展示数据写 注册登录不用)
package com.bawei.zhou1.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.bawei.zhou1.R;
import com.nostra13.universalimageloader.core.ImageLoader;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
-
@author 王艺霏
-
@fileName MyAdapter
-
@package com.bawei.zhou1.adapter
**/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
Context context;
JSONArray result;
public MyAdapter(Context context,JSONArray result){
this.context=context;
this.result=result;
}@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//带入布局 实例化viewholder
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.lay,null,false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {
//解析数据并赋值
try {
JSONObject jsonObject = result.getJSONObject(i);
String title = jsonObject.getString(“title”);
String img = jsonObject.getString(“imageUrl”);
//赋值
myViewHolder.name.setText(title);
ImageLoader.getInstance().displayImage(img,myViewHolder.img);//点击事件 myViewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onItemClickListener.OnClick(i); } }); //长按事件 myViewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { onItemClickListener.OnLongClick(i); return true; } }); } catch (JSONException e) { e.printStackTrace(); }
}
@Override
public int getItemCount() {
return result.length();
}//自定义一个内部的ViewHolder
public class MyViewHolder extends RecyclerView.ViewHolder{private final TextView name; private final ImageView img; public MyViewHolder(@NonNull View itemView) { super(itemView); name = itemView.findViewById(R.id.name); img = itemView.findViewById(R.id.img); }
}
//定义接口
public interface OnItemClickListener{
void OnClick(int i);
void OnLongClick(int i);
}
//声明接口
private OnItemClickListener onItemClickListener;//set
public void setOnItemClickListener(OnItemClickListener onItemClickListener){
this.onItemClickListener=onItemClickListener;
}
}