第一步:
maven { url "https://jitpack.io" } 第二步:compile 'com.github.yekh:project-library:v1.0.0'
MainActivity 类@ContentView(R.layout.activity_main) public class MainActivity extends BaseActvity implements View.OnClickListener{ private SharedPreferences sp; @ViewInject(R.id.lv) private ListView lv; private final String urlPath ="http://api.expoon.com/AppNews/getNewsList/type/1/p/"; private int index; private List<DataBean> list=new ArrayList<>(); private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); sp = getSharedPreferences("user_setting",MODE_PRIVATE); adapter=new MyAdapter(this,list,R.layout.item); lv.setAdapter(adapter); lv.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // 当不滚动时 if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { // 判断是否滚动到底部 if (view.getLastVisiblePosition() == view.getCount() - 1) { //加载更多功能的代码 loadData(); } } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } }); loadData(); } private void loadData() { WhereBuilder b = WhereBuilder.b(); b.and("urlPath","=",urlPath+index); DbManager db = ((MyApp)getApplication()).getDb(); try { List<DataBean> listBean = db.selector(DataBean.class).where(b).findAll(); if (listBean != null && listBean.size() > 0) { Toast.makeText(MainActivity.this, "从数据库", Toast.LENGTH_SHORT).show(); list.addAll(listBean); adapter.notifyDataSetChanged(); index++; }else{ Toast.makeText(MainActivity.this, "从网络", Toast.LENGTH_SHORT).show(); http().get(urlPath+index, new MyCallback<Data>() { @Override public void success(Data data) { for(DataBean bean :data.getData()){ bean.setUrlPath(urlPath+index); } list.addAll(data.getData()); adapter.notifyDataSetChanged(); DbManager db = ((MyApp)getApplication()).getDb(); try { db.save(data.getData()); } catch (DbException e) { e.printStackTrace(); } index++; } @Override public void error(Throwable throwable) { Toast.makeText(MainActivity.this, throwable.getMessage(), Toast.LENGTH_SHORT).show(); } }); } } catch (DbException e) { e.printStackTrace(); } } @Override public void onClick(View v) { changeNight(); } private void changeNight() { boolean isNight = sp.getBoolean("night", false); if (isNight) { //这是设置成非夜间模式 AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); sp.edit().putBoolean("night", false).commit(); } else { //这是设置成夜间模式 AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); sp.edit().putBoolean("night", true).commit(); } recreate(); } } APP类public class MyApp extends App{ private DbManager.DaoConfig daoConfig; private DbManager db; @Override public void onCreate() { super.onCreate(); //NetImageLoader.getInstance().init(new GlideImageLoader()); daoConfig = new DbManager.DaoConfig() .setDbName("azhong.db")//设置数据库的名字 .setTableCreateListener(new DbManager.TableCreateListener() {//创建表的监听 @Override public void onTableCreated(DbManager db, TableEntity<?> table) { Log.d("TAG", table.getName()); } }) .setAllowTransaction(true)//设置是否允许事务,默认是true .setDbDir(new File(Environment.getExternalStorageDirectory() + "/zsy"))//设置数据库路径,默认是data/data/包名/database .setDbOpenListener(new DbManager.DbOpenListener() {//设置数据库打开的监听 @Override public void onDbOpened(DbManager db) { db.getDatabase().enableWriteAheadLogging();//开启多线程操作 } }); // .setDbUpgradeListener()//设置数据库更新的监听 // .setDbVersion(1);//设置数据库的版本 db= x.getDb(daoConfig); SharedPreferences sp = getSharedPreferences("user_setting",MODE_PRIVATE); boolean isNight = sp.getBoolean("night", false); if (isNight) { //这是设置成夜间模式 AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); } else { //这是设置成非夜间模式 AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); } } public DbManager getDb() { return db; } }
适配器
public class MyAdapter extends CommAdapter<DataBean,MyAdapter.ViewHolder>{ public MyAdapter(Context context, List<DataBean> list, int itemLayoutId) { super(context, list, itemLayoutId); } @Override public void setViewByHolder(ViewHolder viewHolder, DataBean dataBean) { viewHolder.title.setText(dataBean.getNews_title()); NetImageLoader.getInstance().display(dataBean.getPic_url(),viewHolder.image); } @Override public ViewHolder getViewHolder() { return new ViewHolder(); } class ViewHolder{ @ViewInject(R.id.title) TextView title; @ViewInject(R.id.image) ImageView image; } }