MVP.商品展示

//M

public interface IBaseModel {
}

//P

public interface IBasePresent<V extends IBaseView> {

    void  attch(V v);
    void deAttch();

}

//V

public interface IBaseView {
}


/**
 *  MVP 的契约类
 */
public interface AccounConten {

    interface View extends IBaseView {

        void showding(String relult);
        void hideing();
        void Error();
    }
    interface Model extends IBaseModel{

        interface NetCallBack{
            void  onSuccess(String relult);
            void  onReeor(String msg);
        }

        void showData(String url,NetCallBack callBack);

    }

    interface Present extends IBasePresent<View>{

        void Showdata(String url);
    }
}

//M

public class AccountModel implements AccounConten.Model {
    private OkHttpUtils okHttpUtils;

    public AccountModel(){

        okHttpUtils = new OkHttpUtils();
    }
    @Override
    public void showData(String url, final NetCallBack callBack) {

        OkHttpUtils.getInstance().get(url, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                String estring = e.getMessage().toString();
                callBack.onReeor(estring);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                String estring = response.body().string().toString();
                callBack.onSuccess(estring);
            }
        });
    }
}
 

//P

public class AccountPresent implements AccounConten.Present{

    private AccounConten.Model model;
    private AccounConten.View view;
    private WeakReference<AccountModel> modelWeakReference;
    private  WeakReference<AccounConten.View> viewWeakReference;

    @Override
    public void Showdata(String url) {

        modelWeakReference.get().showData(url, new AccounConten.Model.NetCallBack() {
            @Override
            public void onSuccess(String relult) {
                view.showding(relult);
            }

            @Override
            public void onReeor(String msg) {

                String msgs = msg.toString();

                Log.i("aaa",msgs);
            }
        });
    }

    @Override
    public void attch(AccounConten.View view) {

        this.view=view;
        viewWeakReference = new WeakReference(view);
        model=new AccountModel();
        modelWeakReference=new WeakReference(model);
    }

    @Override
    public void deAttch() {

    }
}
 

//adapter

public class Myapdater extends RecyclerView.Adapter<MyHoderView> {
    List<UiBean.ResultBean.NearbyCinemaListBean> list;
    Context context;

    public Myapdater(List<UiBean.ResultBean.NearbyCinemaListBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public MyHoderView onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        MyHoderView inflate = new MyHoderView(LayoutInflater.from(context).inflate(R.layout.item, parent, false));

        return inflate;
    }

    @Override
    public void onBindViewHolder(@NonNull MyHoderView holder, int position) {

        holder.tv_name.setText(list.get(position).getName());
        holder.tv_title.setText(list.get(position).getAddress());

        if(list!=null&&list.size()>=0){

            Glide.with(context)
                    .load(list.get(position).getLogo())
                    .into(holder.tv_image);

        }
    }

    @Override
    public int getItemCount() {
        return list.size();
    }
}
 

//OkHttpUtils

public class OkHttpUtils {

    public OkHttpClient client;

    private static  OkHttpUtils okHttpUtils = new OkHttpUtils();

    public static OkHttpUtils getInstance() {

        if(okHttpUtils==null){
            synchronized (OkHttpUtils.class){
                okHttpUtils=new OkHttpUtils();
            }
        }

        return okHttpUtils;
    }

    public OkHttpUtils() {

        if(client==null){
            synchronized (OkHttpClient.class){
                client = new OkHttpClient.Builder().build();
            }
        }

    }

    public void  get(String url, Callback callback){

        Request build = new Request.Builder().url(url).build();

        client.newCall(build).enqueue(callback);
    }
}
 

//主页面

public class MainActivity extends AppCompatActivity implements AccounConten.View {

    private RecyclerView rexecyView;
    private AccountPresent present;
    private List<UiBean.ResultBean.NearbyCinemaListBean> list = new ArrayList<>();
    private Myapdater apdater;
    private UiBean bean;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        rexecyView = findViewById(R.id.recylerView);

        rexecyView.setLayoutManager(new LinearLayoutManager(this));
        apdater = new Myapdater(list,this);
        rexecyView.setAdapter(apdater);

        rexecyView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));


        present=new AccountPresent();
        present.attch(this);
        present.Showdata("http://172.17.8.100/movieApi/cinema/v1/findRecommendCinemas?longitude=116.30551391385724&laitude=40.04571807462411&page=1&count=10&userld=18&sessionld=15320748258726");

    }

    @Override
    public void showding(String relult) {

        Log.i("aaa",relult+"sss");

        Gson gson = new Gson();
         bean = gson.fromJson(relult, UiBean.class);

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                list.addAll(bean.getResult().getNearbyCinemaList());
                apdater.notifyDataSetChanged();
            }
        });

    }

    @Override
    public void hideing() {

    }

    @Override
    public void Error() {

    }
}
 

猜你喜欢

转载自blog.csdn.net/F846368440/article/details/82799657