Android 用Retrofit进行网络获取数据,recyclerview进行展示在Fragment里,并存入到GreenDao数据库中
来源:互联网 发布:单片机c语言讲解 编辑:程序博客网 时间:2024/05/21 06:45
MainActivity的代码
package wangyetian.bwie.com.myapplication.activity;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.FrameLayout;import android.widget.RadioButton;import butterknife.Bind;import butterknife.ButterKnife;import butterknife.OnClick;import wangyetian.bwie.com.myapplication.R;import wangyetian.bwie.com.myapplication.fragment.HomePageFragment;import wangyetian.bwie.com.myapplication.fragment.IdeaFragment;import wangyetian.bwie.com.myapplication.fragment.InformFragment;import wangyetian.bwie.com.myapplication.fragment.MarketFragment;import wangyetian.bwie.com.myapplication.fragment.MoreFragment;public class MainActivity extends AppCompatActivity { @Bind(R.id.homepage) RadioButton homepage; @Bind(R.id.idea) RadioButton idea; @Bind(R.id.market) RadioButton market; @Bind(R.id.inform) RadioButton inform; @Bind(R.id.more) RadioButton more; @Bind(R.id.Fragment) FrameLayout Fragment; private HomePageFragment homePageFragment; private IdeaFragment ideaFragment; private InformFragment informFragment; private MarketFragment marketFragment; private MoreFragment moreFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); homePageFragment = new HomePageFragment(); ideaFragment = new IdeaFragment(); informFragment = new InformFragment(); marketFragment = new MarketFragment(); moreFragment = new MoreFragment(); getSupportFragmentManager().beginTransaction().add(R.id.Fragment, homePageFragment).commit(); getSupportFragmentManager().beginTransaction().add(R.id.Fragment, ideaFragment).commit(); getSupportFragmentManager().beginTransaction().add(R.id.Fragment, informFragment).commit(); getSupportFragmentManager().beginTransaction().add(R.id.Fragment, marketFragment).commit(); getSupportFragmentManager().beginTransaction().add(R.id.Fragment, moreFragment).commit(); getSupportFragmentManager().beginTransaction().show(homePageFragment).commit(); getSupportFragmentManager().beginTransaction().hide(ideaFragment).commit(); getSupportFragmentManager().beginTransaction().hide(informFragment).commit(); getSupportFragmentManager().beginTransaction().hide(marketFragment).commit(); getSupportFragmentManager().beginTransaction().hide(moreFragment).commit(); } //网络判断// public boolean isNetworkConnected(Context context) {// if (context != null) {// ConnectivityManager mConnectivityManager = (ConnectivityManager) context// .getSystemService(Context.CONNECTIVITY_SERVICE);// NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();// if (mNetworkInfo != null) {// Toast.makeText(context, "有网", Toast.LENGTH_SHORT).show();// EventBus.getDefault().postSticky("0");// return mNetworkInfo.isAvailable();// }else{// Toast.makeText(context, "无网", Toast.LENGTH_SHORT).show();// EventBus.getDefault().postSticky("1");// }// }// return false;// } @OnClick({R.id.homepage, R.id.idea, R.id.market, R.id.inform, R.id.more}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.homepage: getSupportFragmentManager().beginTransaction().show(homePageFragment).commit(); getSupportFragmentManager().beginTransaction().hide(ideaFragment).commit(); getSupportFragmentManager().beginTransaction().hide(informFragment).commit(); getSupportFragmentManager().beginTransaction().hide(marketFragment).commit(); getSupportFragmentManager().beginTransaction().hide(moreFragment).commit(); break; case R.id.idea: getSupportFragmentManager().beginTransaction().hide(homePageFragment).commit(); getSupportFragmentManager().beginTransaction().show(ideaFragment).commit(); getSupportFragmentManager().beginTransaction().hide(informFragment).commit(); getSupportFragmentManager().beginTransaction().hide(marketFragment).commit(); getSupportFragmentManager().beginTransaction().hide(moreFragment).commit(); break; case R.id.market: getSupportFragmentManager().beginTransaction().hide(homePageFragment).commit(); getSupportFragmentManager().beginTransaction().hide(ideaFragment).commit(); getSupportFragmentManager().beginTransaction().show(informFragment).commit(); getSupportFragmentManager().beginTransaction().hide(marketFragment).commit(); getSupportFragmentManager().beginTransaction().hide(moreFragment).commit(); break; case R.id.inform: getSupportFragmentManager().beginTransaction().hide(homePageFragment).commit(); getSupportFragmentManager().beginTransaction().hide(ideaFragment).commit(); getSupportFragmentManager().beginTransaction().hide(informFragment).commit(); getSupportFragmentManager().beginTransaction().show(marketFragment).commit(); getSupportFragmentManager().beginTransaction().hide(moreFragment).commit(); break; case R.id.more: getSupportFragmentManager().beginTransaction().hide(homePageFragment).commit(); getSupportFragmentManager().beginTransaction().hide(ideaFragment).commit(); getSupportFragmentManager().beginTransaction().hide(informFragment).commit(); getSupportFragmentManager().beginTransaction().hide(marketFragment).commit(); getSupportFragmentManager().beginTransaction().show(moreFragment).commit(); break; default: break; } }}
package wangyetian.bwie.com.myapplication.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.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import java.util.List;import wangyetian.bwie.com.myapplication.R;import wangyetian.bwie.com.myapplication.activity.IApplication;import wangyetian.bwie.com.myapplication.adapter.MyAdapter;import wangyetian.bwie.com.myapplication.bean.NetDataBean;import wangyetian.bwie.com.myapplication.bean.NewslistBean;import wangyetian.bwie.com.myapplication.presenter.MyPresenter;import wangyetian.bwie.com.myapplication.view.IView;public class HomePageFragment extends Fragment implements IView { private MyPresenter presenter; private RecyclerView recyclerView; private LinearLayoutManager manager; private MyAdapter adapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = View.inflate(getActivity(), R.layout.home_page_fragment, null); recyclerView = view.findViewById(R.id.recyclerview); presenter = new MyPresenter(this); presenter.get(); manager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); adapter = new MyAdapter(getActivity()); recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(manager); IApplication.session.getNewslistBeanDao().loadAll();// EventBus.getDefault().register(this); List<NewslistBean> list1 = presenter.getdb(); if(list1 == null || list1.size() == 0){ presenter.get(); }else { adapter.addList(list1); } return view; } @Override public void onSuccess(NetDataBean bean) { adapter.addData(bean); } @Override public void onFailure(Exception e) { }// @Subscribe(threadMode = ThreadMode.MAIN,sticky = true)// public void getEventBus(String i){// if (i.equals("0")){// return;// }else{// List<NewslistBean> datalist = IApplication.session.getNewslistBeanDao().loadAll();// MyAdapter myAdapter = new MyAdapter(getActivity(),datalist);// recyclerView.setAdapter(myAdapter);//// }//// }// @Override// public void onDestroyView() {// super.onDestroyView();// EventBus.getDefault().unregister(this);// }}
retrofit网络获取代码
package wangyetian.bwie.com.myapplication.activity;import retrofit2.Call;import retrofit2.http.Field;import retrofit2.http.FormUrlEncoded;import retrofit2.http.GET;import retrofit2.http.POST;import retrofit2.http.Query;import wangyetian.bwie.com.myapplication.bean.NetDataBean;/** * Created by hp on 2017/12/2. */public interface IGetDataBase { @GET("/nba/?") Call<NetDataBean> get(@Query("key") String key,@Query("num") int num); @FormUrlEncoded @POST("/nba/?") Call<NetDataBean> post(@Field("key") String key,@Query("num") int num);}
package wangyetian.bwie.com.myapplication.activity;import android.app.Application;import com.facebook.drawee.backends.pipeline.Fresco;import org.greenrobot.greendao.database.Database;import retrofit2.Retrofit;import retrofit2.converter.gson.GsonConverterFactory;import wangyetian.bwie.com.myapplication.dao.DaoMaster;import wangyetian.bwie.com.myapplication.dao.DaoSession;/** * Created by hp on 2017/12/2. */public class IApplication extends Application { public static IGetDataBase iGetDataBase; public static DaoSession session; @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://api.tianapi.com") .addConverterFactory(GsonConverterFactory.create()) .build(); iGetDataBase = retrofit.create(IGetDataBase.class); DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this,"tests"); Database database = helper.getWritableDb(); session = new DaoMaster(database).newSession(); }}
adapter适配器代码
package wangyetian.bwie.com.myapplication.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.facebook.drawee.view.SimpleDraweeView;import java.util.ArrayList;import java.util.List;import wangyetian.bwie.com.myapplication.R;import wangyetian.bwie.com.myapplication.bean.NetDataBean;import wangyetian.bwie.com.myapplication.bean.NewslistBean;/** * Created by hp on 2017/12/2. */public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHolder> { private Context context; private List<NewslistBean> list; public void addData(NetDataBean bean) { if (list == null) { list = new ArrayList<>(); } list.addAll(bean.getNewslist()); notifyDataSetChanged(); } public void addList(List bean) { if (list == null) { list = new ArrayList<>(); } list.addAll(bean); notifyDataSetChanged(); } public MyAdapter(Context context) { this.context = context; } @Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context,R.layout.item,null); return new MyHolder(view); } @Override public void onBindViewHolder(MyHolder holder, int position) { holder.simpleDraweeView.setImageURI(list.get(position).getPicUrl()); holder.tv_title.setText(list.get(position).getTitle()); holder.tv_source.setText(list.get(position).getCtime()); } @Override public int getItemCount() { return list == null?0:list.size(); } static class MyHolder extends RecyclerView.ViewHolder{ SimpleDraweeView simpleDraweeView; TextView tv_title,tv_source; public MyHolder(View itemView) { super(itemView); simpleDraweeView = itemView.findViewById(R.id.simpledraweeview); tv_title = itemView.findViewById(R.id.tv_title); tv_source = itemView.findViewById(R.id.tv_source); } }}
MVP的View层代码
package wangyetian.bwie.com.myapplication.view;import wangyetian.bwie.com.myapplication.bean.NetDataBean;/** * Created by hp on 2017/12/2. */public interface IView { public void onSuccess(NetDataBean bean); public void onFailure(Exception e);}
MVP的Model层接口代码
package wangyetian.bwie.com.myapplication.model;import wangyetian.bwie.com.myapplication.bean.NetDataBean;/** * Created by hp on 2017/12/2. */public interface IModel { public void onSuccess(NetDataBean bean); public void onFailure(Exception e);}
MVP的Model层代码
package wangyetian.bwie.com.myapplication.model;import java.util.List;import retrofit2.Call;import retrofit2.Callback;import retrofit2.Response;import wangyetian.bwie.com.myapplication.activity.IApplication;import wangyetian.bwie.com.myapplication.bean.NetDataBean;import wangyetian.bwie.com.myapplication.bean.NewslistBean;import wangyetian.bwie.com.myapplication.dao.DaoSession;/** * Created by hp on 2017/12/2. */public class MyModel { public void getData(final IModel callback){ Call<NetDataBean> call = IApplication.iGetDataBase.get("11ebce8ebe253e019b886ae1547b07d7",10); call.enqueue(new Callback<NetDataBean>() { @Override public void onResponse(Call<NetDataBean> call, Response<NetDataBean> response) { NetDataBean bean = response.body(); callback.onSuccess(bean); IApplication.session.getNewslistBeanDao().insertInTx(bean.getNewslist()); } @Override public void onFailure(Call<NetDataBean> call, Throwable t) { callback.onFailure(new Exception("")); } }); } public void postDat(final IModel callback){ Call<NetDataBean> call = IApplication.iGetDataBase.post("11ebce8ebe253e019b886ae1547b07d7",10); call.enqueue(new Callback<NetDataBean>() { @Override public void onResponse(Call<NetDataBean> call, Response<NetDataBean> response) { NetDataBean bean = response.body(); callback.onSuccess(bean); } @Override public void onFailure(Call<NetDataBean> call, Throwable t) { callback.onFailure(new Exception("")); } }); } public List<NewslistBean> getdb(DaoSession session){ List<NewslistBean> list = session.getNewslistBeanDao().loadAll(); return list; }}
MVP的Presente层r的代码
package wangyetian.bwie.com.myapplication.presenter;import java.util.List;import wangyetian.bwie.com.myapplication.activity.IApplication;import wangyetian.bwie.com.myapplication.bean.NetDataBean;import wangyetian.bwie.com.myapplication.bean.NewslistBean;import wangyetian.bwie.com.myapplication.model.IModel;import wangyetian.bwie.com.myapplication.model.MyModel;import wangyetian.bwie.com.myapplication.view.IView;/** * Created by hp on 2017/12/2. */public class MyPresenter { private IView view; private MyModel model; public MyPresenter(IView view) { this.view = view; this.model = new MyModel(); } public List<NewslistBean> getdb(){ List<NewslistBean> list = model.getdb(IApplication.session); return list; } public void get(){ model.getData(new IModel() { @Override public void onSuccess(NetDataBean bean) { if (view != null){ view.onSuccess(bean); } } @Override public void onFailure(Exception e) { if (view != null){ view.onFailure(e); } } }); } public void post(){ model.postDat(new IModel() { @Override public void onSuccess(NetDataBean bean) { if (view != null){ view.onSuccess(bean); } } @Override public void onFailure(Exception e) { if (view != null){ view.onFailure(e); } } }); }}
MainActivity的布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".activity.MainActivity"> <FrameLayout android:id="@+id/Fragment" android:layout_above="@+id/footer" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> <LinearLayout android:id="@+id/footer" android:layout_width="match_parent" android:layout_height="70dp" android:orientation="horizontal" android:layout_alignParentBottom="true" android:layout_weight="1"> <RadioGroup android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <RadioButton android:id="@+id/homepage" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:button="@null" android:checked="true" android:text="首页" android:textColor="@drawable/text_color" android:textSize="25sp"/> <RadioButton android:id="@+id/idea" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:button="@null" android:text="想法" android:textColor="@drawable/text_color" android:textSize="25sp"/> <RadioButton android:id="@+id/market" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:button="@null" android:text="市场" android:textColor="@drawable/text_color" android:textSize="25sp"/> <RadioButton android:id="@+id/inform" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:button="@null" android:text="通知" android:textColor="@drawable/text_color" android:textSize="25sp"/> <RadioButton android:id="@+id/more" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:button="@null" android:text="更多" android:textColor="@drawable/text_color" android:textSize="25sp"/> </RadioGroup> </LinearLayout></RelativeLayout>
recyclerview的布局自行定义,bean类自己定义
greendao的集成和使用可以去这个网址查看:http://www.jianshu.com/p/853401a7d02b
阅读全文
0 0
- Android 用Retrofit进行网络获取数据,recyclerview进行展示在Fragment里,并存入到GreenDao数据库中
- android之访问网络获取网页数据并存入数据库
- Android Kotlin(二)—— Kotlin与Retrofit进行网络请求RecyclerView展示图片列表
- GreenDao+ButterKnife+Retrofit+Fresco展示网络数据
- java获取excel中数据并存入数据库表中
- RecyclerView加载数据进行展示
- 获取网络数据进行Gson解析用ListView展示
- Android中怎么获取系统时间并存入数据库
- fresco加载图片+EventBus Activity之间跳转传值+GreenDAo数据库+retrofit请求数据+recyclerview展示数据+ButterKnife找控件
- android_网络判断,Greendao,retrofit,eventbus结合展示数据
- GreenDao,注解,RecyclerView,EventBus,Retrofit展示列表
- 使用python进行whois查询并存入数据库
- Echarts报表插件,从数据库获取数据,json传值,在页面进行展示
- Retrofit网络请求+Recyclerview展示数据+Fresco显示图片
- Retrofit网络请求+Recyclerview展示数据+Fresco显示图片
- 展示数据使用:recyclerview,retrofit,greendao,butterknife,eventbus,fresco。实现效果图列表。MVP模式。
- Android中网络获取数据进行Gson解析
- Android--------在Fragment中通过MVP模式用Okhttp进行数据请求
- linux -日期时间命令
- 基于 Java 的 bean 配置
- 一些Python库的安装
- Filter 过滤器
- 12.2 省选训练总结
- Android 用Retrofit进行网络获取数据,recyclerview进行展示在Fragment里,并存入到GreenDao数据库中
- ButterKnife注解框架
- Python之break和continue
- vim
- 【1701H1】【穆晨】【171203】连续第五十四天总结
- Linux作业二
- 数组的冒泡排序
- 状压dp 方格取数(1)
- SpringMVC拦截器