导入依赖包:
dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.android.support:appcompat-v7:26.1.0'implementation 'com.android.support.constraint:constraint-layout:1.0.2'testImplementation 'junit:junit:4.12'androidTestImplementation 'com.android.support.test:runner:1.0.1'androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'compile 'org.greenrobot:greendao:3.2.2' // add library//fresco加载图片compile 'com.facebook.fresco:fresco:1.5.0'//eventbuscompile 'org.greenrobot:eventbus:3.1.1'compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'//retrofit网络加载框架compile 'com.squareup.retrofit2:retrofit:2.3.0'compile 'com.squareup.retrofit2:converter-gson:2.3.0'//butterknifecompile 'com.jakewharton:butterknife:8.5.1'annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
}

adapter——MyAdapter
package com.example.week01.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.example.week01.R;
import com.example.week01.bean.UserBean;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.view.SimpleDraweeView;import java.util.List;/*** Created by Administrator on 2017/12/2.*/public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {List<UserBean> list;Context context;public MyAdapter(List<UserBean> list, Context context) {this.list = list;this.context = context;}@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {Fresco.initialize(context);//加载视图View view=View.inflate(context, R.layout.iten_rec,null);return new MyViewHolder(view);}class MyViewHolder extends RecyclerView.ViewHolder{SimpleDraweeView img;TextView name;TextView msg;TextView time;public MyViewHolder(View itemView) {super(itemView);//初始化控件img=itemView.findViewById(R.id.sdv);name=itemView.findViewById(R.id.name);msg=itemView.findViewById(R.id.msg);time=itemView.findViewById(R.id.times);}}@Overridepublic void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {UserBean resultsBean=list.get(position);MyViewHolder myViewHolder= (MyViewHolder) holder;myViewHolder.name.setText(resultsBean.getType());myViewHolder.msg.setText(resultsBean.getDes());myViewHolder.time.setText(resultsBean.getPublishedAt()+"");}@Overridepublic int getItemCount() {return list.size();}
}
adapter——RecAdapter
package com.example.week01.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.example.week01.R;
import com.example.week01.bean.LogBean;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.view.SimpleDraweeView;import java.util.List;/*** Created by Administrator on 2017/12/2.*/public class RecAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {List<LogBean.ResultsBean> list;Context context;public RecAdapter(List<LogBean.ResultsBean> list, Context context) {this.list = list;this.context = context;}@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {Fresco.initialize(context);//加载视图View view=View.inflate(context, R.layout.iten_rec,null);return new MyViewHolder(view);}class MyViewHolder extends RecyclerView.ViewHolder{SimpleDraweeView img;TextView name;TextView msg;TextView time;public MyViewHolder(View itemView) {super(itemView);//初始化控件img=itemView.findViewById(R.id.sdv);name=itemView.findViewById(R.id.name);msg=itemView.findViewById(R.id.msg);time=itemView.findViewById(R.id.times);}}@Overridepublic void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {LogBean.ResultsBean resultsBean=list.get(position);MyViewHolder myViewHolder= (MyViewHolder) holder;if(resultsBean.getImages()!=null){myViewHolder.img.setImageURI(resultsBean.getImages().get(0));}myViewHolder.name.setText(resultsBean.getType());myViewHolder.msg.setText(resultsBean.getDesc());myViewHolder.time.setText(resultsBean.getPublishedAt()+"");}@Overridepublic int getItemCount() {return list.size();}
}
bean——LogBean
package com.example.week01.bean;import java.util.List;/*** Created by Administrator on 2017/12/2.*/public class LogBean {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;}public static class ResultsBean {private String _id;private String createdAt;private String desc;private String publishedAt;private String source;private String type;private String url;private boolean used;private String who;private List<String> images;public ResultsBean(String _id, String createdAt, String desc, String publishedAt, String source, String type, String url, boolean used, String who, List<String> images) {this._id = _id;this.createdAt = createdAt;this.desc = desc;this.publishedAt = publishedAt;this.source = source;this.type = type;this.url = url;this.used = used;this.who = who;this.images = images;}public String get_id() {return _id;}public void set_id(String _id) {this._id = _id;}public String getCreatedAt() {return createdAt;}public void setCreatedAt(String createdAt) {this.createdAt = createdAt;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public String getPublishedAt() {return publishedAt;}public void setPublishedAt(String publishedAt) {this.publishedAt = publishedAt;}public String getSource() {return source;}public void setSource(String source) {this.source = source;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public boolean isUsed() {return used;}public void setUsed(boolean used) {this.used = used;}public String getWho() {return who;}public void setWho(String who) {this.who = who;}public List<String> getImages() {return images;}public void setImages(List<String> images) {this.images = images;}}
}
bean——NetBean
package com.example.week01.bean;/*** Created by Administrator on 2017/12/2.*/public class NetBean {String netzhuan;public String getNetzhuan() {return netzhuan;}public void setNetzhuan(String netzhuan) {this.netzhuan = netzhuan;}
}
bean——UserBean
package com.example.week01.bean;import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Generated;/*** Created by Administrator on 2017/12/2.*/
@Entity
public class UserBean {@Id(autoincrement =true)Long id;private String publishedAt;private String des;private String type;@Generated(hash = 1903720241)public UserBean(Long id, String publishedAt, String des, String type) {this.id = id;this.publishedAt = publishedAt;this.des = des;this.type = type;}@Generated(hash = 1203313951)public UserBean() {}public Long getId() {return this.id;}public void setId(Long id) {this.id = id;}public String getPublishedAt() {return this.publishedAt;}public void setPublishedAt(String publishedAt) {this.publishedAt = publishedAt;}public String getDes() {return this.des;}public void setDes(String des) {this.des = des;}public String getType() {return this.type;}public void setType(String type) {this.type = type;}}
fragment——fragment01
package com.example.week01.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 android.widget.Toast;import com.example.week01.GreenDaoHelper;
import com.example.week01.R;
import com.example.week01.adapter.MyAdapter;
import com.example.week01.adapter.RecAdapter;
import com.example.week01.bean.DaoSession;
import com.example.week01.bean.LogBean;
import com.example.week01.bean.NetBean;
import com.example.week01.bean.UserBean;
import com.example.week01.utils.NetListener;
import com.example.week01.utils.RetrofitHepler;
import com.example.week01.utils.ServerApi;import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;import java.util.List;import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;/*** Created by Administrator on 2017/12/2.*/
public class fragment01  extends Fragment {ServerApi serverApi;RecAdapter adapter;@BindView(R.id.rec)RecyclerView mRec;private View view;private Unbinder unbinder;private DaoSession session;@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//注册EventBus.getDefault().register(this);}@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {//加载视图View view = View.inflate(getActivity(), R.layout.fragment01, null);session= GreenDaoHelper.getDaoSession(getActivity());unbinder = ButterKnife.bind(this, view);mRec.setLayoutManager(new LinearLayoutManager(getContext()));//创建ServerApi对象serverApi = RetrofitHepler.getServerApi();if(!new NetListener().isNetworkConnected(getActivity())){/*** 无网状态下*///查询记录List<UserBean> areas = session.getUserBeanDao().loadAll();MyAdapter myAdapter=new MyAdapter(areas,getActivity());mRec.setAdapter(myAdapter);}else{Toast.makeText(getActivity(),"有网",Toast.LENGTH_LONG).show();Call<LogBean> logBeanCall = serverApi.logBeanCall();logBeanCall.enqueue(new Callback<LogBean>() {@Overridepublic void onResponse(Call<LogBean> call, Response<LogBean> response) {//请求成功final LogBean logBean = response.body();getActivity().runOnUiThread(new Runnable() {@Overridepublic void run() {//实例化适配器adapter = new RecAdapter(logBean.getResults(), getActivity());mRec.setAdapter(adapter);//存值到数据库for(int i=0;i<logBean.getResults().size();i++){LogBean.ResultsBean r=logBean.getResults().get(i);UserBean userBean=new UserBean(System.currentTimeMillis(),r.getPublishedAt(),r.getDesc(),r.getType());session.insert(userBean);}}});}@Overridepublic void onFailure(Call<LogBean> call, Throwable t) {}});}return view;}@Subscribepublic void isNetWork(NetBean netBean) {Toast.makeText(getContext(), netBean.getNetzhuan(), Toast.LENGTH_LONG).show();//判断if (netBean.getNetzhuan().equals("网络连接中~")) {Call<LogBean> logBeanCall = serverApi.logBeanCall();logBeanCall.enqueue(new Callback<LogBean>() {@Overridepublic void onResponse(Call<LogBean> call, Response<LogBean> response) {//请求成功LogBean logBean = response.body();}@Overridepublic void onFailure(Call<LogBean> call, Throwable t) {}});}}//销毁防止内存泄露@Overridepublic void onDestroyView() {super.onDestroyView();unbinder.unbind();EventBus.getDefault().unregister(this);}
}
fragment02
package com.example.week01.fragment;import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;import com.example.week01.R;/*** Created by Administrator on 2017/12/2.*/public class fragment02 extends Fragment {@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view=View.inflate(getActivity(), R.layout.fragment02,null);return view;}
}
utils——App
package com.example.week01.utils;import android.app.Application;import com.facebook.drawee.backends.pipeline.Fresco;/*** Created by Administrator on 2017/12/2.*/public class App extends Application {@Overridepublic void onCreate() {super.onCreate();Fresco.initialize(this);}
}
utils——NetListener
package com.example.week01.utils;import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;/*** Created by Administrator on 2017/12/2.* 网络状态判断工具类*/public class NetListener {public boolean isNetworkConnected(Context context) {if (context != null) {ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();if (mNetworkInfo != null) {return mNetworkInfo.isAvailable();}}return false;}
}
utils——RetrofitHepler
package com.example.week01.utils;import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;/*** Created by Administrator on 2017/12/2.*/public class RetrofitHepler {public  static OkHttpClient okHttpClient;public static ServerApi serverApi;static{initOkHttpClent();}//初始化OkHttpClientpublic  static void initOkHttpClent(){if(okHttpClient==null){synchronized (RetrofitHepler.class){if(okHttpClient==null){okHttpClient=new OkHttpClient();}}}}public  static ServerApi getServerApi(){if(serverApi==null){synchronized (ServerApi.class){if(serverApi==null){serverApi=OnCreatApi(ServerApi.class,UrlApi.HOST_URL);}}}return serverApi;}//定义方法初始化ServerApipublic  static<T> T OnCreatApi(Class<T> tClass,String url){Retrofit retrofit=new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).build();return retrofit.create(tClass);}}
utils——ServerApi
package com.example.week01.utils;import com.example.week01.bean.LogBean;import retrofit2.Call;
import retrofit2.http.GET;/*** Created by Administrator on 2017/12/2.*/public interface ServerApi {@GET(UrlApi.URL)Call<LogBean> logBeanCall();
}

utils——UrlApi
package com.example.week01.utils;/*** Created by Administrator on 2017/12/2.*/public class UrlApi {public static final String HOST_URL="http://gank.io/api/data/Android/";public static final String URL="10/1";}

GreenDaoHelper
package com.example.week01;import android.app.Application;
import android.content.Context;
import android.content.ContextWrapper;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;import com.example.week01.bean.DaoMaster;
import com.example.week01.bean.DaoSession;
import com.facebook.drawee.backends.pipeline.Fresco;import java.io.File;
import java.io.IOException;/*** Created by Administrator on 2017/12/2.*/public class GreenDaoHelper extends Application {private GreenDaoHelper Instance;private static DaoMaster daoMaster;private static DaoSession daoSession;public GreenDaoHelper getInstance() {if (Instance == null) {Instance = this;}return Instance;}@Overridepublic void onCreate() {super.onCreate();Fresco.initialize(this);}/*** 获取DaoMaster** @param context* @return*/public static DaoMaster getDaoMaster(Context context) {if (daoMaster == null) {try{ContextWrapper wrapper = new ContextWrapper(context) {/*** 获得数据库路径,如果不存在,则创建对象对象** @param name*/@Overridepublic File getDatabasePath(String name) {// 判断是否存在sd卡boolean sdExist = android.os.Environment.MEDIA_MOUNTED.equals(android.os.Environment.getExternalStorageState());if (!sdExist) {// 如果不存在,Log.e("SD卡管理:", "SD卡不存在,请加载SD卡");return null;} else {// 如果存在// 获取sd卡路径String dbDir = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();dbDir += "/Android";// 数据库所在目录String dbPath = dbDir + "/" + name;// 数据库路径// 判断目录是否存在,不存在则创建该目录File dirFile = new File(dbDir);if (!dirFile.exists())dirFile.mkdirs();// 数据库文件是否创建成功boolean isFileCreateSuccess = false;// 判断文件是否存在,不存在则创建该文件File dbFile = new File(dbPath);if (!dbFile.exists()) {try {isFileCreateSuccess = dbFile.createNewFile();// 创建文件} catch (IOException e) {e.printStackTrace();}} elseisFileCreateSuccess = true;// 返回数据库文件对象if (isFileCreateSuccess)return dbFile;elsereturn super.getDatabasePath(name);}}/*** 重载这个方法,是用来打开SD卡上的数据库的,android 2.3及以下会调用这个方法。** @param name* @param mode* @param factory*/@Overridepublic SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory) {return SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null);}/*** Android 4.0会调用此方法获取数据库。** @see ContextWrapper#openOrCreateDatabase(String,*      int,*      SQLiteDatabase.CursorFactory,*      DatabaseErrorHandler)* @param name* @param mode* @param factory* @param errorHandler*/@Overridepublic SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler) {return SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null);}};DaoMaster.OpenHelper helper = new DaoMaster.DevOpenHelper(wrapper,"test.db",null);daoMaster = new DaoMaster(helper.getWritableDatabase()); //获取未加密的数据库}catch (Exception e){e.printStackTrace();}}return daoMaster;}/*** 获取DaoSession对象** @param context* @return*/public static DaoSession getDaoSession(Context context) {if (daoSession == null) {if (daoMaster == null) {getDaoMaster(context);}daoSession = daoMaster.newSession();}return daoSession;}
}
MainActivity
package com.example.week01;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.RadioButton;import com.example.week01.bean.NetBean;
import com.example.week01.fragment.fragment01;
import com.example.week01.fragment.fragment02;
import com.example.week01.fragment.fragment03;
import com.example.week01.fragment.fragment04;
import com.example.week01.fragment.fragment05;
import com.example.week01.utils.NetListener;import org.greenrobot.eventbus.EventBus;import java.util.ArrayList;
import java.util.List;import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;public class MainActivity extends AppCompatActivity {@BindView(R.id.flt)ViewPager mFlt;@BindView(R.id.shouye)RadioButton mShouye;@BindView(R.id.xf)RadioButton mXf;@BindView(R.id.sc)RadioButton mSc;@BindView(R.id.tt)RadioButton mTt;@BindView(R.id.gd)RadioButton mGd;List<Fragment> fragments;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);fragments=new ArrayList<>();fragments.add(new fragment01());fragments.add(new fragment02());fragments.add(new fragment03());fragments.add(new fragment04());fragments.add(new fragment05());mFlt.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {@Overridepublic Fragment getItem(int position) {return fragments.get(position);}@Overridepublic int getCount() {return fragments.size();}});mFlt.setCurrentItem(0);NetBean netBean=new NetBean();if(!new NetListener().isNetworkConnected(MainActivity.this)){netBean.setNetzhuan("当前没网!!!");}else{netBean.setNetzhuan("网络连接中~");}EventBus.getDefault().post(netBean);}@OnClick({R.id.flt, R.id.shouye, R.id.xf, R.id.sc, R.id.tt, R.id.gd})public void onClick(View v) {switch (v.getId()) {default:break;case R.id.flt:break;case R.id.shouye:mFlt.setCurrentItem(0);//显示页面break;case R.id.xf:mFlt.setCurrentItem(1);break;case R.id.sc:mFlt.setCurrentItem(2);break;case R.id.tt:mFlt.setCurrentItem(3);break;case R.id.gd:mFlt.setCurrentItem(4);break;}}@Overrideprotected void onDestroy() {super.onDestroy();// EventBus.getDefault().unregister(this);}
}

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><android.support.v4.view.ViewPagerandroid:layout_width="wrap_content"android:layout_height="0dp"android:layout_weight="9"android:id="@+id/flt"/><RadioGroupandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="horizontal"><RadioButtonandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:text="首页"android:button="@null"android:id="@+id/shouye"/><RadioButtonandroid:layout_width="0dp"android:layout_height="match_parent"android:gravity="center"android:layout_weight="1"android:text="想法"android:button="@null"android:id="@+id/xf"/><RadioButtonandroid:layout_width="0dp"android:layout_height="match_parent"android:gravity="center"android:layout_weight="1"android:text="市场"android:button="@null"android:id="@+id/sc"/><RadioButtonandroid:layout_width="0dp"android:layout_height="match_parent"android:gravity="center"android:layout_weight="1"android:text="通知"android:button="@null"android:id="@+id/tt"/><RadioButtonandroid:layout_width="0dp"android:layout_height="match_parent"android:gravity="center"android:layout_weight="1"android:text="更多"android:button="@null"android:id="@+id/gd"/></RadioGroup></LinearLayout>
fragment01.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/rec"></android.support.v7.widget.RecyclerView>
</LinearLayout>
iten_rec.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:fresco="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><com.facebook.drawee.view.SimpleDraweeViewandroid:layout_width="30dp"android:layout_height="30dp"android:id="@+id/sdv"fresco:placeholderImage="@mipmap/ic_launcher"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/name"/></LinearLayout><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="16sp"android:id="@+id/msg"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/times"/></LinearLayout>
												

andriod——Fresco+Retrofit+GreenDao相关推荐

  1. Fresco+retrofit+rxjava+mvp+电商进阶购物车(wxr)

    依赖 compile 'com.squareup.okhttp3:okhttp:3.10.0' compile 'com.android.support:recyclerview-v7:26.1.0' ...

  2. TabLayout+Fragment+RecyclerView+fresco+butterknife+greendao数据库

    效果图 mvp+内存泄漏 package com.bawei.zhoukao1.mvp.view;/*** 作者:$yangxiangrong* <p>* 2019/4/13 08:37* ...

  3. 不平等博弈_不平等与全球性大流行:完美的风暴?

    不平等博弈 An article in the Financial Times, "This is how class wars start", contrasts how ric ...

  4. 如何创建一流技术团队

    android团队成长计划 发表于 2017-03-23 |   最近一直对狼性文化挺痴迷的,团队的协同作战会让你事半功倍,没有完美的个人,只有完美的团队,一个人的能力毕竟有限,要想走得更远还是需要团 ...

  5. 展示数据使用:recyclerview,retrofit,greendao,butterknife,eventbus,fresco。实现效果图列表。MVP模式。

    实现思路必须步骤.新框架愿各位同门进行学习,思路清析一下. 一,首先添加依赖. compile 'com.squareup.retrofit2:converter-gson:2.3.0' implem ...

  6. andriod——Retrofit+Fresco+MVP商品分类

    先网络权限 <uses-permission android:name="android.permission.INTERNET"></uses-permissi ...

  7. Demo2:Retrofit+Rxjava+Okhttp+Gson+Fresco+Butterknife

    底层build.gradle buildscript {repositories {google()jcenter()mavenCentral() // add repository}dependen ...

  8. Android RxJava与Retrofit与RecyclerView与Fresco结合网络请求

    展示效果 首先添加依赖 compile 'com.squareup.retrofit2:retrofit:2.0.1'compile 'com.squareup.retrofit2:converter ...

  9. Retrofit+Recycleview+fresco

    依赖 implementation 'io.reactivex:rxjava:1.0.14'implementation 'io.reactivex:rxandroid:1.0.1'implement ...

最新文章

  1. 神舟Z7 KP5D1驱动
  2. Django的静态文件路径设置对比
  3. Vue —— vuex
  4. ZetCode 数据库教程
  5. python中文字体下载_python中matlabplot和seaborn中文字体显示的一种解决方案
  6. 基于STM32F1单片机、ESP8266WIFI模块、DHT11温湿度传感的WIFI网络温湿度传输系统
  7. gg修改器偏移量修改_gg修改器偏移量什么意思 | 手游网游页游攻略大全
  8. 公司股权结构设计的原则与因素
  9. python卷积神经网络训练,python卷积神经网络图像
  10. java 对PDF文件进行密码加密
  11. android keystore 查看、修改密码和别名等
  12. vscode如何自定义背景图片
  13. 固定Java窗口的大小
  14. Android Studio模拟器报错:Could not initialize DirectSoundCapture
  15. am5718_TI Cortex-A15 AM5718 AM57x 多核异构开发板免费试用
  16. 网站优化和SEO的差别
  17. java游戏魔塔20层_▓▓◇◆20层魔塔超详细攻略◇◆ ▓▓
  18. rust刷卡点地图_新版rust地图物资 | 手游网游页游攻略大全
  19. [高通SDM450][Android9.0]同一套代码兼容不同的emmc
  20. linux编译安装madam,madam、Linux LVM的使用

热门文章

  1. 诺基亚升级Android10,诺基亚Android 10系统更新,诺基亚7+的性能得到可完善
  2. android 自定义 对号,Android 自定义View 对勾CheckBox
  3. SSD固态硬盘颗粒SLC MLC TLC QLC有什么区别
  4. 系统分析师 常用英文词汇
  5. python地图可视化
  6. 安化云台山风景区三个景点,轻松游玩山水之间的风光
  7. SSL证书过期后怎么办?
  8. jenkins使用python脚本发送企业微信通知
  9. oracle中integer最大值,integer表示的最大整数
  10. 【AntdVue】下拉选择框乱回弹问题