展示

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

猜你喜欢

转载自blog.csdn.net/weixin_42614228/article/details/81056865