listview设置OnScrollListener分页加载,日夜间模式,判断无网用数据库显示
2017-08-13 21:14
323 查看
public class MainActivity extends AppCompatActivity { private ListView xlistview; private Dao dao; private int index = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置对应的主题 ,在ui创建好之后设置主题无效,所以要放到setContentView()方法前面setTheme() ThemeUtil.onActivityCreatedSetTheme(this); setContentView(R.layout.activity_main); xlistview = (ListView) findViewById(R.id.xlv); dao = new Dao(this); read(); boolean b = IntentIf.intentconnection(this); if (b) { read(); } else { List<MenuInfo.DataBean> select = dao.select(); xlistview.setAdapter(new myadapter(select)); } xlistview.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { int i = view.getLastVisiblePosition(); if (scrollState == SCROLL_STATE_IDLE) { if (i == view.getCount() - 1) { if (index > 2) { index = 0; } else { ++index; } read(); } } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } }); //切换夜间模式 ImageView im = (ImageView) findViewById(R.id.im); im.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //切换日夜间模式 ThemeUtil.ChangeCurrentTheme(MainActivity.this); } }); } public void read() { String path = "http://api.expoon.com/AppNews/getNewsList/type/1/p/"; RequestParams params = new RequestParams(path); x.http().post(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { Gson gson = new Gson(); MenuInfo menuInfo = gson.fromJson(result, MenuInfo.class); List<MenuInfo.DataBean> list = menuInfo.getData(); for (MenuInfo.DataBean b : list ) { String title = b.getNews_title(); String url = b.getPic_url(); dao.add(title, url); } xlistview.setAdapter(new myadapter(list)); } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } class myadapter extends BaseAdapter { ImageOptions options = new ImageOptions.Builder() .setLoadingDrawableId(R.mipmap.ic_launcher) .build(); List<MenuInfo.DataBean> list; public myadapter(List<MenuInfo.DataBean> list) { this.list = list; } @Override public int getCount() { return list != null ? list.size() : 0; } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { viewholder viewholder = null; if (convertView == null) { convertView = View.inflate(MainActivity.this, R.layout.mylist_item, null); viewholder = new viewholder(); viewholder.img = (ImageView) convertView.findViewById(R.id.list_img); viewholder.tvtitle = (TextView) convertView.findViewById(R.id.list_tv); convertView.setTag(viewholder); } else { viewholder = (MainActivity.viewholder) convertView.getTag(); } viewholder.tvtitle.setText(list.get(position).getNews_title()); x.image().bind(viewholder.img, list.get(position).getPic_url(), options); return convertView; } } class viewholder { ImageView img; TextView tvtitle; } }
Application 类
public class Myapp extends Application { @Override public void onCreate() { super.onCreate(); x.Ext.init(this); } public static void initImageLoader(Context context) { File cacheDir = StorageUtils.getOwnCacheDirectory(context, "topnews/Cache");//获取到缓存的目录地址 Log.d("cacheDir", cacheDir.getPath()); //创建配置ImageLoader(所有的选项都是可选的,只使用那些你真的想定制),这个可以设定在APPLACATION里面,设置为全局的配置参数 ImageLoaderConfiguration config = new ImageLoaderConfiguration .Builder(context) .threadPoolSize(3)//线程池内加载的数量 .denyCacheImageMultipleSizesInMemory()//.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation你可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) .diskCacheSize(50 * 1024 * 1024) .diskCacheFileNameGenerator(new Md5FileNameGenerator())//将保存的时候的URI名称用MD5 加密 .tasksProcessingOrder(QueueProcessingType.LIFO) .diskCache(new UnlimitedDiskCache(cacheDir)) //自定义缓存路径//.imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间 .build(); ImageLoader.getInstance().init(config);//全局初始化此配置 } } 创建数据库类
public class Sqlite extends SQLiteOpenHelper { public Sqlite(Context context) { super(context, "zhoukao2.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table zhoukao2(id Integer primary key autoincrement,news_title varchar(50),pic_url varchar(50))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } 添加查询类
public class Dao { private final SQLiteDatabase dao; public Dao(Context context){ Sqlite sqlite=new Sqlite(context); dao = sqlite.getWritableDatabase(); } public boolean add(String title, String pic){ ContentValues values=new ContentValues(); values.put("news_title",title); values.put("pic_url",pic); long l = dao.insert("zhoukao2", null, values); if (l!=-1){ return true; } return false; } public List<MenuInfo.DataBean> select(){ List<MenuInfo.DataBean> list =new ArrayList<>(); Cursor cursor = dao.query("zhoukao2", null, null, null, null, null, null); while (cursor.moveToNext()){ String newstitle = cursor.getString(cursor.getColumnIndex("news_title")); String picurl = cursor.getString(cursor.getColumnIndex("pic_url")); MenuInfo.DataBean dataBean=new MenuInfo.DataBean(); dataBean.setNews_title(newstitle); dataBean.setPic_url(picurl); list.add(dataBean); } return list; } } 判断网络类
public class IntentIf { public static boolean intentconnection(Context context){ //得到管理网络的服务实例 ConnectivityManager connMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); //得到网络信息 (判断网络是否连接、3G、4G) NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); //判断网络是否已经连接,如果连接的话,返回true,否则false return (networkInfo != null && networkInfo.isConnected()); } } 日夜模式类
public class ThemeUtil { //我当前应用的主题 private static int theme = 0; //日间模式主题 private static final int DAY_THEME = 0; //夜间模式主题 private static final int NIGHT_THEME = 1; public static void onActivityCreatedSetTheme(Activity activity) { switch (theme) { case DAY_THEME: activity.setTheme(R.style.AppTheme); break; case NIGHT_THEME: activity.setTheme(R.style.to_night); break; } } //点击按钮改变对应得主题 public static void ChangeCurrentTheme(Activity activity) { //1、改变当前主题的theme变量 switch (theme) { case DAY_THEME: theme = NIGHT_THEME; break; case NIGHT_THEME: theme = DAY_THEME; break; } //2、重启这个activity activity.finish(); activity.startActivity(new Intent(activity, activity.getClass())); } }
相关文章推荐
- 网络判断+xlistview上拉加载、下拉刷新+Tablayout +图片拖拽缩放+数据库存储 3、案例完成思路要求: 模块一:用fragment+viewpager+Tablayout实现页面
- 分别设置listview加载中、空数据、加载数据失败三种状态的显示
- 分别设置listview加载中、空数据、加载数据失败三种状态的显示
- 判断网络状态 fragment隐藏显示 xlistview多条目加载数据
- ListView 数据加载 +数据读取+ 数据格网状显示+判断数据是否重复
- 自己封装一个类借助实现数据库加载及夜间模式
- 窗体中有一个图片框,显示一副图片。要求:1)在窗体打开时,动态加载图片;2)设置图片显示模式为根据图片框大小缩放图片;3)图片自己找;4)当鼠标停留在图片框时,显示“**风光”提
- 设置软件启动时候的图片,然后通过数据库,判断是否加载引导页面
- ListView显示数据库的数据-采用自定义布局-向上滑动可以加载更多数据
- Listview 设置两列异步加载网络图片,结果出现图片显示错位
- SQL2008无法附加数据库,提示“无法显示请求的对话框”未能加载文件或程序集
- EasyPlayer RTSP 安卓Android播放器显示模式设置方法
- 关于listview,scrollview显示模糊边缘的设置
- Struts 页面首次加载 显示数据库的数据
- phpMyAdmin 个性化设置,字体大小设置,去掉“以树形显示数据库”,禁用“发送错误报告”
- 设置文档的显示模式
- Android listview异步加载图片(线程池,内存缓存,SD卡缓存)优化显示
- 设置夜间模式
- Android ListView图片异步加载显示
- “判断listview的最后一项是否完全显示”的其逻辑推理和用到的API讲解,及普遍的错误使用