public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener { private XListView xListView; private boolean flag; private MyAdapter adapter; private int index = 1; private Dao dao; private ImageView riye; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); YeJian.zhuti(this); setContentView(R.layout.activity_main); xListView = (XListView) findViewById(R.id.xlistview); xListView.setPullLoadEnable(true); xListView.setXListViewListener(this); riye = (ImageView) findViewById(R.id.riye); riye.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { YeJian.gaibian(MainActivity.this); } }); qingqiu(); dao = new Dao(this); if(Wang.isConnection(this)){ //获得数据 qingqiu(); }else { List<Bean.DataBean> data = dao.chaxun(); if(adapter == null){ adapter = new MyAdapter(data); xListView.setAdapter(adapter); } } } private void qingqiu() { String url = "http://api.expoon.com/AppNews/getNewsList/type/1/p/"; RequestParams params = new RequestParams(url); x.http().post(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { Gson gson = new Gson(); Bean bean = gson.fromJson(result, Bean.class); List<Bean.DataBean> data = bean.getData(); for (Bean.DataBean b :data) { String title = b.getNews_title(); String pic = b.getPic_url(); dao.add(title,pic); } if(adapter == null){ adapter = new MyAdapter(data); xListView.setAdapter(adapter); }else { adapter.more(data,flag); adapter.notifyDataSetChanged(); } } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } @Override public void onRefresh() { ++index; qingqiu(); flag=true; xListView.stopRefresh(true); } @Override public void onLoadMore() { ++index; qingqiu(); flag=false; xListView.stopLoadMore(); } class MyAdapter extends BaseAdapter{ ImageOptions options = new ImageOptions.Builder() .setLoadingDrawableId(R.mipmap.ic_launcher) .setUseMemCache(true) .setSize(200,200) .setCircular(true) .build(); private List<Bean.DataBean> data; public MyAdapter(List<Bean.DataBean> data){ this.data=data; } public void more(List<Bean.DataBean> datas,boolean flag){ for (Bean.DataBean bean:datas) { if(flag){ data.add(0,bean); }else { data.add(bean); } } } @Override public int getCount() { return data != null ? data.size():0; } @Override public Object getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return position; } @Override public int getItemViewType(int position) { if(position % 2 == 0){ return 0; }else { return 1; } } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); ViewHolder1 holder1 = null; ViewHolder2 holder2 = null; switch (type){ case 0:{ if(convertView == null){ convertView = View.inflate(MainActivity.this,R.layout.item1,null); holder1 = new ViewHolder1(); holder1.wen1 = (TextView) convertView.findViewById(R.id.wen1); holder1.tu1 = (ImageView) convertView.findViewById(R.id.tu1); convertView.setTag(holder1); }else { holder1 = (ViewHolder1) convertView.getTag(); } holder1.wen1.setText(data.get(position).getNews_title()); x.image().bind(holder1.tu1,data.get(position).getPic_url(),options); } break; case 1:{ if(convertView == null){ convertView = View.inflate(MainActivity.this,R.layout.item2,null); holder2 = new ViewHolder2(); holder2.wen2 = (TextView) convertView.findViewById(R.id.wen2); holder2.tu2 = (ImageView) convertView.findViewById(R.id.tu2); convertView.setTag(holder2); }else { holder2 = (ViewHolder2) convertView.getTag(); } holder2.wen2.setText(data.get(position).getNews_title()); x.image().bind(holder2.tu2,data.get(position).getPic_url(),options); } break; } return convertView; } } class ViewHolder1{ TextView wen1; ImageView tu1; } class ViewHolder2{ TextView wen2; ImageView tu2; } } 实现夜间模式的类:public class YeJian { public static int theme = 0; public static final int DAY_THEME = 0; public static final int NIGHT_THEME = 1; public static void zhuti(Activity activity){ switch (theme){ case DAY_THEME: activity.setTheme(R.style.day_Theme); break; case NIGHT_THEME: activity.setTheme(R.style.night_Theme); break; } } public static void gaibian(Activity activity){ switch (theme){ case DAY_THEME: theme = NIGHT_THEME; break; case NIGHT_THEME: theme = DAY_THEME; break; } activity.finish(); activity.overridePendingTransition(R.anim.in,R.anim.out); activity.startActivity(new Intent(activity,activity.getClass())); } }日夜间切换动画:<?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:fromAlpha="0.0" android:toAlpha="1.0"></alpha><?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:toAlpha="0.0" android:fromAlpha="1.0"></alpha>
数据库操作:public class Dao { private final SQlite sQlite; private final SQLiteDatabase db; public Dao(Context context){ sQlite = new SQlite(context); db = sQlite.getWritableDatabase(); } public boolean add(String title,String pic){ ContentValues vaules = new ContentValues(); vaules.put("news_title",title); vaules.put("pic_url",pic); long l = db.insert("zhoukao", null, vaules); if(l != -1){ return true; } return false; } public List<Bean.DataBean> chaxun(){ List<Bean.DataBean> data = new ArrayList<>(); Cursor cursor = db.query("zhoukao", null, null, null, null, null,null); while (cursor.moveToNext()){ String title = cursor.getString(cursor.getColumnIndex("news_title")); String pic = cursor.getString(cursor.getColumnIndex("pic_url")); Bean.DataBean bean = new Bean.DataBean(); bean.setNews_title(title); bean.setPic_url(pic); data.add(bean); } return data; } }权限:<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
数据缓存+listview分页加载+日夜间模式切换
最新推荐文章于 2020-11-15 23:19:43 发布