2、数据缓存+listview分页加载+日夜间模式切换
来源:互联网 发布:js闪动文字 编辑:程序博客网 时间:2024/06/07 04:55
public class MainActivity extends AppCompatActivity { private RadioButton radioButton; private TextView textView; private ListView listView; private static final String TAG = "MainActivity"; private ListView lv; private MyAdapter adapter; private String urlPath = "http://api.expoon.com/AppNews/getNewsList/type/1/p/"; private List<DataBean> list; private int ye = 1; //默认是日间模式 private int theme = R.style.AppTheme; private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: Data bean = new Gson().fromJson(msg.obj.toString(), Data.class); list = new ArrayList<>(); list.addAll(bean.getData()); adapter = new MyAdapter(MainActivity.this, list); lv.setAdapter(adapter); break; default: Data bean1 = new Gson().fromJson(msg.obj.toString(), Data.class); list.addAll(bean1.getData()); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { theme = savedInstanceState.getInt("theme"); setTheme(theme); } setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.listview); load(ye); //设置Listview的滑动监听 lv.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { //滚动结束 case NumberPicker.OnScrollListener.SCROLL_STATE_IDLE: //滚动停止时,判断如果滚动到底部 if (view.getLastVisiblePosition() == view.getCount() - 1) { // 使页数加1 ye++; Toast.makeText(MainActivity.this, "" + ye, Toast.LENGTH_SHORT).show(); load(ye); adapter.notifyDataSetChanged(); } else if (view.getFirstVisiblePosition() == 0) { //滚动到顶部 // 重新定义为第一页 list.clear(); ye = 1; Toast.makeText(MainActivity.this, "" + ye, Toast.LENGTH_SHORT).show(); // 获得数据 load(ye); // 刷新适配器 adapter.notifyDataSetChanged(); } break; //开始滚动 case AbsListView.OnScrollListener.SCROLL_STATE_FLING: break; //正在滚动 case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: break; default: break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } }); if (savedInstanceState != null) { theme = savedInstanceState.getInt("theme"); setTheme(theme); } radioButton = (RadioButton) findViewById(R.id.radio_daynight); radioButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { theme = (theme == R.style.AppTheme) ? R.style.NightAppTheme : R.style.AppTheme; MainActivity.this.recreate(); } }); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("theme", theme); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); theme = savedInstanceState.getInt("theme"); } private void load(final int ye) { new Thread() { @Override public void run() { String sb = Utils.getUrlConnect(urlPath + ye); Message msg = Message.obtain(); msg.what = ye; msg.obj = sb.toString(); mHandler.sendMessage(msg); } }.start(); } class MyAdapter extends BaseAdapter { private Context mContext; private List<DataBean> mList; public MyAdapter(Context context, List<DataBean> list) { mContext = context; mList = list; } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = View.inflate(mContext, R.layout.item, null); holder = new ViewHolder(); holder.title = (TextView) convertView.findViewById(R.id.title); holder.image = (ImageView) convertView.findViewById(R.id.image); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.title.setText(mList.get(position).getNews_title()); Glide.with(mContext).load(mList.get(position).getPic_url()).into(holder.image); return convertView; } class ViewHolder { TextView title; ImageView image; } }}/** **httppast获取网络数据 **/public class Utils { public static String postUrlConnect(String urlPath, Map<String, Object> map) { StringBuffer sbRequest = new StringBuffer(); if (map != null && map.size() > 0) { for (String key : map.keySet()) { sbRequest.append(key + "=" + map.get(key) + "&"); } } String request = sbRequest.substring(0, sbRequest.length() - 1); try { URL url = new URL(urlPath); HttpURLConnection httpurl = (HttpURLConnection) url.openConnection(); httpurl.setRequestMethod("POST"); //设置连接主机超时 httpurl.setConnectTimeout(30000); //设置从主机读取数据超时 httpurl.setReadTimeout(30000); httpurl.setDoInput(true); httpurl.setDoOutput(true); //读取数据 OutputStream os = httpurl.getOutputStream(); os.write(request.getBytes()); //刷新 os.flush(); //判断返回值是否正确 if (httpurl.getResponseCode() == 200) { InputStream in = httpurl.getInputStream(); StringBuffer sb = new StringBuffer(); //创建字符数组 byte[] buff = new byte[1024]; int len = -1; while ((len = in.read(buff)) != -1) { sb.append(new String(buff, 0, len, "utf-8")); } //关闭流 in.close(); os.close(); httpurl.disconnect(); return sb.toString(); } else { return null; } } catch (Exception e) { e.printStackTrace(); } return urlPath; } public static String getUrlConnect(String urlPath) { try { //获取地址 URL url = new URL(urlPath); HttpURLConnection httpurl = (HttpURLConnection) url.openConnection(); httpurl.connect(); //判断返回值 if (httpurl.getResponseCode() == 200) { InputStream in = httpurl.getInputStream(); StringBuffer sb = new StringBuffer(); byte[] buff = new byte[1024]; int len = -1; while ((len = in.read(buff)) != -1) { sb.append(new String(buff, 0, len, "utf-8")); } in.close(); httpurl.disconnect(); return sb.toString(); } else { return null; } } catch (Exception e) { e.printStackTrace(); } return null; }}
最后声明一下,配置的权限:网络、读取、写入、app本地
阅读全文
0 0
- 2、数据缓存+listview分页加载+日夜间模式切换
- 数据缓存+listview分页加载+日夜间模式切换
- 数据缓存+listview分页加载+日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- 日夜间模式切换
- listview设置OnScrollListener分页加载,日夜间模式,判断无网用数据库显示
- Android 切换日夜间模式
- 日夜间模式的切换
- 轻松切换日夜间模式
- 使用redis文件服务器完成图片下载显示
- 一次sqlserver变慢优化过程
- angular2 引用bootstrap-daterangepicker
- Eclipse智能提示及快捷键
- Train Problem I HDU
- 2、数据缓存+listview分页加载+日夜间模式切换
- 增量and全量数据同步项目总结
- Eclipse Mac版 配置tomcat插件
- 数据库性能优化之SQL语句优化
- 传统软件测试流程和分类
- CUDA编程(十)使用Kahan's Summation Formula提高精度
- Selenium2library关键字之富文本框和上传文件
- 查看memcached\redis\pdo_mysql\phpinfo是否正确配置
- Linq 联合查询