public interface ContarInterFace {
//View层
public interface MyViewActivity{
public void toShow(Object o);
}
//P层
public interface PresenterInterFace{
public void toRequest( int page);
}
}
三 P层
public class Presenter<T> implements ContarInterFace.PresenterInterFace {
T tt;
MyModel myModel;
public Presenter(T t){
myModel =new MyModel ();
tt =t;
}
@Override
public void toRequest(int page) {
String url ="http://172.17.8.100/small/commodity/v1/findCommodityByKeyword";
myModel.setMyCallBack (new MyModel.MyCallBack () {
@Override
public void success(Object o) {
ContarInterFace.MyViewActivity myViewActivity= (ContarInterFace.MyViewActivity) tt;
myViewActivity.toShow (o);
}
});
Map<String,String> map = new HashMap<> ();
map.put ("keyword","高");
map.put("page" , page + "");
map.put("count" , "10");
myModel.getRequest (url,map);
}
}
四 。Model
public class MyModel {
MyCallBack myCallBack;
OkHttpUtile utile;
Handler mhandler = new Handler (){
@Override
public void handleMessage(Message msg) {
super.handleMessage (msg);
int type = msg.arg1;
Log.e("ttt","过了");
if(type==1){
String json = (String) msg.obj;
Gson gson = new Gson ();
ProBean proBean = gson.fromJson (json, ProBean.class);
List<ProBean.ResultBean> result = proBean.getResult ();
myCallBack.success (result);
}
}
};
public void getRequest(String url, Map<String,String> map){
utile = OkHttpUtile.getInstance();
utile.doGet (url, map, 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 ();
Message message = new Message ();
message.arg1=1;
message.obj=json;
mhandler.sendMessage (message);
}
});
}
public void setMyCallBack(MyCallBack back){
myCallBack =back;
}
public interface MyCallBack{
public void success(Object o);
}
}
五。Http
public class OkHttpUtile {
public static OkHttpUtile utile;
OkHttpClient okHttpClient;
private OkHttpUtile(){
okHttpClient =new OkHttpClient.Builder().addInterceptor (new Interceptor () {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request ();
Log.e ("tag",request+"");
Response response = chain.proceed (request);
return response;
}
}).build ();
}
public static synchronized OkHttpUtile getInstance(){
if(utile == null){
utile = new OkHttpUtile ();
}
return utile;
}
public void doGet(String url,Map<String,String>map,Callback callback){
if(map!=null &map.size ()>0){
StringBuilder builder = new StringBuilder ();
for (String key:map.keySet ()){
String value = map.get (key);
builder.append (key)
.append ("=")
.append (value)
.append ("&");
}
String str = builder.toString ();
int index = str.lastIndexOf ("&");
str = str.substring (0, index);
url = url +"?"+ str;
}
Request request = new Request.Builder ()
.url (url)
.get ()
.build ();
Call call = okHttpClient.newCall (request);
call.enqueue (callback);
}
六。 Adapter
public class MyAdapter extends RecyclerView.Adapter {
List<ProBean.ResultBean> list;
Context mCont;
int type=1;
public MyAdapter(List<ProBean.ResultBean> list, MainActivity mainActivity) {
this.list = list;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
mCont = viewGroup.getContext ();
if(type==1){
View view = LayoutInflater.from (viewGroup.getContext ()).inflate (R.layout.activity_item, null);
return new Holde_1(view);
}else{
View view = LayoutInflater.from (viewGroup.getContext ()).inflate (R.layout.activity_ite, null);
return new Holde_2(view);
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
if(type == 1){
((Holde_1)viewHolder).text1.setText (list.get (i).getCommodityName ());
Glide.with (mCont).load (list.get (i).getMasterPic ()).into (((Holde_1)viewHolder).image1);
}else{
((Holde_2)viewHolder).text2.setText (list.get (i).getCommodityName ());
Glide.with (mCont).load (list.get (i).getMasterPic ()).into (((Holde_2)viewHolder).image2);
}
}
@Override
public int getItemViewType(int position) {
type=position%2;
return type;
}
@Override
public int getItemCount() {
return list.size ();
}
public class Holde_1 extends RecyclerView.ViewHolder{
TextView text1;
ImageView image1;
public Holde_1(@NonNull View itemView) {
super (itemView);
text1 = itemView.findViewById (R.id.text1);
image1 = itemView.findViewById (R.id.image1);
}
}
public class Holde_2 extends RecyclerView.ViewHolder{
TextView text2;
ImageView image2;
public Holde_2(@NonNull View itemView) {
super (itemView);
text2 = itemView.findViewById (R.id.text2);
image2 = itemView.findViewById (R.id.image2);
}
}
}