Week_Demo

适配器

public class SubAdapter extends RecyclerView.Adapter<SubAdapter.SubViewHolder> {
    Context context;
    List<User> users;
    public SubAdapter(Context context, List<User> users) {
        this.context = context;
        this.users = users;
    }
    @NonNull
    @Override
    public SubViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_layout, viewGroup, false);
        SubViewHolder subViewHolder = new SubViewHolder(view);
        return subViewHolder;
    }
    @Override
    public void onBindViewHolder(@NonNull SubViewHolder subViewHolder, int i) {

        subViewHolder.text_view.setText(users.get(i).getTitle());
        Uri uri = Uri.parse(users.get(i).getImages());
        subViewHolder.sim_show_image.setImageURI(uri);
    }

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

    class SubViewHolder extends RecyclerView.ViewHolder{

        private final SimpleDraweeView sim_show_image;
        private final TextView text_view;

        public SubViewHolder(@NonNull View itemView) {
            super(itemView);
            sim_show_image = itemView.findViewById(R.id.sim_show_image);
            text_view = itemView.findViewById(R.id.text_view);
        }
    }

}

  Activity

public class MainActivity extends AppCompatActivity implements IConter.IView {

    @BindView(R.id.recyc_view)
    RecyclerView recycView;
    private IConter.IPresenter presenter;
    ArrayList<ShopBean.DataBean> list = new ArrayList<>();
    private Context context;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        context = MainActivity.this;
        presenter = new PresenterImpl();
        presenter.attachView(this);
        presenter.showRequestData();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.datachView(this);
    }

    @Override
    public void showData(List<User> users) {

        GridLayoutManager gridLayoutManager = new GridLayoutManager(context, 2);
        SubAdapter subAdapter = new SubAdapter(context, users);
        recycView.setLayoutManager(gridLayoutManager);
        recycView.setAdapter(subAdapter);

    }
}

  App

public class App extends Application {

    private static App app;
    private DaoSession daoSession;

    @Override
    public void onCreate() {
        super.onCreate();

        app = App.this;
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "Fei");
        SQLiteDatabase db = helper.getWritableDatabase();
        DaoMaster daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
        Fresco.initialize(this);
    }

    public static App getinstance(){
        return app;
    }

    public DaoSession getDaoSession()
    {
        return daoSession;
    }
}

  网络工具类

  

public class RetrofitUtil {

    private static RetrofitUtil retrofitUtil;
    private Retrofit retrofit;
    private OkHttpClient client;

    private RetrofitUtil(){
        client = new OkHttpClient.Builder()
                .addInterceptor(new Interceptor())
                .connectTimeout(5000, TimeUnit.MILLISECONDS)
                .readTimeout(5000,TimeUnit.MILLISECONDS)
                .build();
    }

    public static RetrofitUtil getInstance(){
        if(null == retrofitUtil){
            synchronized (RetrofitUtil.class){
                if(retrofitUtil == null){
                    return new RetrofitUtil();
                }
            }
        }
        return retrofitUtil;
    }

    public ApiService getapiService(String beanUrl){
        retrofit = new Retrofit.Builder()
                .client(client)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .baseUrl(beanUrl)
                .build();
        ApiService apiService = retrofit.create(ApiService.class);
        return apiService;
    }
}

  拦截器

public class Interceptor implements okhttp3.Interceptor {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        String method = request.method();
        HttpUrl url = request.url();
        Log.i("aaaa",method+"..."+url);
        Response proceed = chain.proceed(request);
        return proceed;
    }
}

  数据库

@Entity
public class User {

    @Id(autoincrement = true)
    Long id;
    @Property
    String title;
    @Property
    String images;

ApiService+contast

public interface ApiService {

    @GET("api.php/api/Lists/content_lists&version=1.7&token=&type=1&cat=&catid2=&page=1")
    Observable<ShopBean> getService(@Query("page")String page);
}
public static final String URL_STRING = "https://app.tuozhe8.com/api.php/api/Lists/content_lists&version=1.7&token=&type=1&cat=&catid2=&page=1";
public static final String BEAN_STRING = "https://app.tuozhe8.com/";

Mvp

IConter

public interface IConter {
    public interface IView{
        void showData(List<User> userList);
    }
    public interface IPresenter<IView>{
        void attachView(IView iView);
        void datachView(IView iView);
        void showRequestData();
    }

    public interface IModel{
        public interface OnCallBackListenter{
            void OnCallBack(List<User> userList);
        }
        void showResponseData(OnCallBackListenter onCallBackListenter);
    }
}

 Model

public class ModelImpl implements IConter.IModel {


    @SuppressLint("CheckResult")
    @Override
    public void showResponseData(final OnCallBackListenter onCallBackListenter) {

        final UserDao userDao = App.getinstance().getDaoSession().getUserDao();
        List<User> users = userDao.loadAll();
        if(users.size()>0){
            onCallBackListenter.OnCallBack(users);
            return;
        }else{
            Observable<ShopBean> observable = RetrofitUtil.getInstance().getapiService(Contast.BEAN_STRING).getService("1");
            observable
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Consumer<ShopBean>() {
                        @Override
                        public void accept(ShopBean shopBean) throws Exception {

                            List<ShopBean.DataBean> data = shopBean.getData();
                            ArrayList<User> userArrayList = new ArrayList<>();
                            for (int i = 0; i<data.size();i++){
                                String title = data.get(i).getTitle();
                                String logo = data.get(i).getLogo();
                                User user = new User();
                                user.setTitle(title);
                                user.setImages(logo);
                                userArrayList.add(user);
                            }

                            onCallBackListenter.OnCallBack(userArrayList);
                            userDao.insertInTx(userArrayList);

                        }
                    }, new Consumer<Throwable>() {
                        @Override
                        public void accept(Throwable throwable) throws Exception {

                        }
                    });
            }
        }
}

 

Presenter

public class PresenterImpl implements IConter.IPresenter<IConter.IView> {

    IConter.IView iView;
    private ModelImpl model;
    private WeakReference<IConter.IView> iViewWeakReference;
    private WeakReference<ModelImpl> modelWeakReference;

    @Override
    public void attachView(IConter.IView iView) {

        this.iView = iView;
        model = new ModelImpl();
        iViewWeakReference = new WeakReference<>(iView);
        modelWeakReference = new WeakReference<>(model);
    }

    @Override
    public void datachView(IConter.IView iView) {

        iViewWeakReference.clear();
        modelWeakReference.clear();

    }

    @Override
    public void showRequestData() {

     model.showResponseData(new IConter.IModel.OnCallBackListenter() {
         @Override
         public void OnCallBack(List<User> userList) {
             iView.showData(userList);
         }
     });

    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值