• Fresco+eventBus+GreenDao+Retrofit


    主activity_xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
        </android.support.v7.widget.RecyclerView>
    </LinearLayout>

    rv_view  item布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/tv_title"
            android:layout_width="match_parent"
            android:layout_height="30dp" />
        <TextView
            android:id="@+id/tv_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    MainActivity

    package com.bawie.www.demoweek.fragment;
    
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Toast;
    
    import com.bawie.www.demoweek.R;
    import com.bawie.www.demoweek.ResultsBean;
    import com.bawie.www.demoweek.adapter.MyAdapter;
    import com.bawie.www.demoweek.callback.IView;
    import com.bawie.www.demoweek.gen.ResultsBeanDao;
    import com.bawie.www.demoweek.presenter.NewPresenter;
    import com.bawie.www.demoweek.util.DBUtils;
    
    import java.util.List;
    
    import butterknife.BindView;
    import butterknife.ButterKnife;
    import butterknife.Unbinder;
    
    /**
     * Created by 杨文倩 on 2017/12/2.
     */
    
    public class FragmentOne extends Fragment implements IView {
        @BindView(R.id.rv)
        RecyclerView rv;
        Unbinder unbinder;
        List<ResultsBean> lists;
        private MyAdapter adapter;
    
    
        private NewPresenter presenter;
        private ResultsBeanDao dao;
    
    
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_one, container, false);
    
            unbinder = ButterKnife.bind(this, view);
            presenter = new NewPresenter();
            dao = DBUtils.getInstance(getActivity()).getDao();
    
    
            //先从数据库取数据展示
            lists = dao.loadAll();
            Log.d("TT", "onCreateView: "+lists.size()+"1111111111111");
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
            rv.setLayoutManager(linearLayoutManager);
    
            adapter = new MyAdapter(getActivity(), this.lists);
            rv.setAdapter(adapter);
            //如果数据库为空就从网路请求
            if(lists==null||lists.size()==0){
                Log.d("TT", "onCreateView: "+"ewrekgmtrghtkt");
                presenter.getData();
            }
    
    
           presenter.attchView(this);
    
    
            return view;
    
        }
    
    
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
        }
    
        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
    
    
        }
    
        @Override
        public void onDestroyView() {
            super.onDestroyView();
            unbinder.unbind();
    
        }
    
        @Override
        public void success(List<ResultsBean> list) {
    
            if(list!=null){
                Log.d("TT", "success: "+list.toString());
    
               for (ResultsBean l:list){
                    Log.d("TT", "success: "+l);
                    dao.insert(l);
                }
                adapter.notifyDataSetChanged();
            }
        }
    
        @Override
        public void failed(String msg) {
            Toast.makeText(getActivity(),"请求失败",Toast.LENGTH_SHORT).show();
        }
    
        @Override
        public void onDestroy() {
            super.onDestroy();
            if(presenter!=null){
               presenter.detachView();
            }
    
        }
    }

    MainActivity判断联网

    package com.bawie.www.demoweek;
    
    import android.graphics.Color;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.Toast;
    
    import com.bawie.www.demoweek.bean.IsBean;
    import com.bawie.www.demoweek.fragment.FragmentFive;
    import com.bawie.www.demoweek.fragment.FragmentFour;
    import com.bawie.www.demoweek.fragment.FragmentOne;
    import com.bawie.www.demoweek.fragment.FragmentThree;
    import com.bawie.www.demoweek.fragment.FragmentTwo;
    import com.bawie.www.demoweek.util.NetWorkUtils;
    import com.hjm.bottomtabbar.BottomTabBar;
    
    import org.greenrobot.eventbus.EventBus;
    import org.greenrobot.eventbus.Subscribe;
    import org.greenrobot.eventbus.ThreadMode;
    
    import butterknife.BindView;
    import butterknife.ButterKnife;
    
    public class MainActivity extends AppCompatActivity {
    
        @BindView(R.id.bt)
        BottomTabBar bt;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ButterKnife.bind(this);
            EventBus.getDefault().register(this);
            bt.init(getSupportFragmentManager())
                    .setImgSize(50,50)
                    .setFontSize(8)
                    .setTabPadding(4,6,10)
                    .setChangeColor(Color.RED,Color.DKGRAY)
                    .addTabItem("首页",R.drawable.home_, FragmentOne.class)
                    .addTabItem("分类",R.drawable.fenlei, FragmentTwo.class)
                    .addTabItem("发现",R.drawable.faxian, FragmentThree.class)
                    .addTabItem("购物车",R.drawable.car, FragmentFour.class)
                    .addTabItem("我的",R.drawable.my, FragmentFive.class)
                    .isShowDivider(false)
                    .setOnTabChangeListener(new BottomTabBar.OnTabChangeListener() {
                        @Override
                        public void onTabChange(int position, String name) {
    
                        }
                    });
    
            boolean b = NetWorkUtils.isNetworkConnected(this);
            IsBean isBean = new IsBean();
            isBean.setFlag(b);
            EventBus.getDefault().post(isBean);
    
        }
    
        @Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行
        public void onDataSynEvent(IsBean event) {
            if(event.isFlag()){
                Toast.makeText(this,"玩家已上线",Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(this,"网络飘走了",Toast.LENGTH_SHORT).show();
            }
        }
        @Override
        protected void onDestroy() {
            super.onDestroy();
            EventBus.getDefault().unregister(this);
        }
    }

    Newpresenter

    package com.bawie.www.demoweek.presenter;
    
    import com.bawie.www.demoweek.ResultsBean;
    import com.bawie.www.demoweek.bean.MessageBean;
    import com.bawie.www.demoweek.callback.ApiService;
    import com.bawie.www.demoweek.callback.IView;
    import com.bawie.www.demoweek.util.RetrofitUtils;
    
    import java.util.List;
    
    import retrofit2.Call;
    import retrofit2.Callback;
    import retrofit2.Response;
    import retrofit2.Retrofit;
    
    /**
     * Created by 杨文倩 on 2017/12/2.
     */
    
    public class NewPresenter {
    
    
        private IView iView;
    
        public void attchView(IView iView){
            this.iView=iView;
        }
    
        public void getData(){
            RetrofitUtils instance = RetrofitUtils.getInstance();
    
            Retrofit retrofit = instance.getRetrofit();
    
            ApiService apiService = retrofit.create(ApiService.class);
    
            Call<MessageBean> call = apiService.getData("10", "1");
    
            call.enqueue(new Callback<MessageBean>() {
                @Override
                public void onResponse(Response<MessageBean> response) {
                    MessageBean body = response.body();
                    List<ResultsBean> results = body.getResults();
                    if(results!=null){
                        iView.success(results);
                    }
    
                }
    
                @Override
                public void onFailure(Throwable t) {
                    if(t!=null){
                        iView.failed(t.getMessage());
                    }
                }
            });
        }
    
        public void detachView(){
            if(iView!=null){
                iView=null;
            }
        }
    }

    IsBean

    package com.bawie.www.demoweek.bean;
    
    /**
     * Created by 杨文倩 on 2017/12/2.
     */
    
    public class IsBean {
    
        private boolean flag;
    
        public boolean isFlag() {
            return flag;
        }
    
        public void setFlag(boolean flag) {
            this.flag = flag;
        }
    }
    MessageBean
    package com.bawie.www.demoweek.bean;
    
    import com.bawie.www.demoweek.ResultsBean;
    
    import java.util.List;
    
    /**
     * Created by 杨文倩 on 2017/12/2.
     */
    
    public class MessageBean {
    
    
        private boolean error;
        private List<ResultsBean> results;
    
        public boolean isError() {
            return error;
        }
    
        public void setError(boolean error) {
            this.error = error;
        }
    
        public List<ResultsBean> getResults() {
            return results;
        }
    
        public void setResults(List<ResultsBean> results) {
            this.results = results;
        }
    
    }

    MyAdapter

    package com.bawie.www.demoweek.adapter;
    
    import android.content.Context;
    import android.support.v7.widget.RecyclerView;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    import com.bawie.www.demoweek.R;
    import com.bawie.www.demoweek.ResultsBean;
    
    import java.util.List;
    
    /**
     * Created by 杨文倩 on 2017/12/2.
     */
    
    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
    
        private Context context;
        private List<ResultsBean> list;
    
        public MyAdapter(Context context, List<ResultsBean> list) {
            this.context = context;
            this.list = list;
        }
    
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = View.inflate(context, R.layout.rv_view, null);
            ViewHolder holder = new ViewHolder(view);
            return holder;
        }
    
    
        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            holder.title.setText(list.get(position).getWho());
            holder.text.setText(list.get(position).getDesc());
        }
    
        @Override
        public int getItemCount() {
            return list.size();
        }
    
        class ViewHolder extends RecyclerView.ViewHolder {
    
            private final TextView title;
            private final TextView text;
    
            public ViewHolder(View itemView) {
                super(itemView);
                title = (TextView)itemView.findViewById(R.id.tv_title);
                text = (TextView) itemView.findViewById(R.id.tv_text);
            }
        }
    }

    接口类

    package com.bawie.www.demoweek.callback;
    
    import com.bawie.www.demoweek.bean.MessageBean;
    
    import retrofit2.Call;
    import retrofit2.http.GET;
    import retrofit2.http.Path;
    
    /**
     * Created by 杨文倩 on 2017/12/2.
     */
    
    public interface ApiService {
    
        @GET("data/Android/{num}/{page}")
        Call<MessageBean> getData(@Path("num") String num, @Path("page") String page);
    }

    接口类2

    package com.bawie.www.demoweek.callback;
    
    import com.bawie.www.demoweek.ResultsBean;
    
    import java.util.List;
    
    /**
     * Created by 杨文倩 on 2017/12/2.
     */
    
    public interface IView {
    
        void success(List<ResultsBean> list);
        void failed(String msg);
    }

    导入的依赖

     compile 'com.jakewharton:butterknife:8.8.1'
        annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
        compile 'org.greenrobot:greendao:3.2.0'
        compile 'com.hjm:BottomTabBar:1.1.1'
        compile 'com.jakewharton:butterknife:8.8.0'
        annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.0'
        compile 'com.android.support:recyclerview-v7:25.0.0'
        compile 'com.facebook.fresco:fresco:0.11.0'
        compile 'org.greenrobot:eventbus:3.0.0'
        compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3'
        compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3'

    导入的greenDao

     greendao {
            schemaVersion 1
            daoPackage 'com.bawie.www.demoweek.gen'
            targetGenDir 'src/main/java'
        }

    App的最上层

    apply plugin: 'org.greenrobot.greendao'

    工程的依赖里

     classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
     mavenCentral();
  • 相关阅读:
    如何判断retina,如何判断设备的比例
    说说移动前端中 viewport (视口)
    随机生成广告
    fullPage 全屏滚动【上下滚动】效果
    判断鼠标滚动方向
    低版本IE浏览器 input元素出现叉叉的情况
    关于IE7 默认有边框的解决方案
    embed 层级太高
    搜狐-新闻页 粗略整理-自我学习
    页面重构布局样式命名规则 —— 参考
  • 原文地址:https://www.cnblogs.com/yu12/p/7967069.html
Copyright © 2020-2023  润新知