上拉刷新下拉加载
来源:互联网 发布:阿里云短信发送 c 编辑:程序博客网 时间:2024/06/05 02:27
public class Fragment1 extends Fragment implements ViewPager.OnPageChangeListener ,XListView.IXListViewListener, AdapterView.OnItemClickListener { private ViewPager vp; private XListView lv_list; private List<String> urls;//轮播图片的集合 private View view; private LinearLayout layout; private NewsDao dao; private List<ImageView> list_img;//小圆点集合 private NewsAdapter na; private List<News> list;//加载数据集合 private int start=0;//初始值 private List<News> book;//加载数据新集合 private int num=10;//跳转数 private String url="http://japi.juhe.cn/comic/book?key=1e58b105e63d17c29181e6cea32b0279&skip=";//请求数据的路径 private GuangBoPanDuan gb ; //广播监听 private List<News> listt; //数据库返回集合 // 自动轮播 private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { int position=vp.getCurrentItem(); position++; vp.setCurrentItem(position); } }; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view=View.inflate(getActivity(), R.layout.fragment1,null); initview(); initdata(); addDot(); vp.setAdapter(new MyPager()); vp.setOnPageChangeListener(this); lunbo(); vp.setCurrentItem(10000*list_img.size());//轮播次数 gb =new GuangBoPanDuan();//内部类 //注册广播(动态) IntentFilter filter=new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); getActivity().registerReceiver(gb,filter); return view; } /** * 轮播方法 */ public void lunbo(){ Timer timer=new Timer(); TimerTask task=new TimerTask() { @Override public void run() { handler.sendEmptyMessage(0); } }; timer.schedule(task,3000,3000); } private void initdata() { dao=new NewsDao(getActivity()); list_img=new ArrayList<ImageView>(); urls=new ArrayList<String>(); list=new ArrayList<News>(); book=new ArrayList<News>(); //图片加载到集合里 urls.add("http://img3.imgtn.bdimg.com/it/u=1865208273,4010052244&fm=26&gp=0.jpg"); urls.add("http://img1.imgtn.bdimg.com/it/u=3308987153,427503974&fm=26&gp=0.jpg"); urls.add("http://img2.imgtn.bdimg.com/it/u=2029864078,51167410&fm=26&gp=0.jpg"); } /** * 加载小圆点的方法 */ public void addDot(){ for (int i = 0; i <urls.size(); i++) { ImageView iv=new ImageView(getActivity()); if(i==0){ iv.setImageResource(R.drawable.check); }else{ iv.setImageResource(R.drawable.nornal); } LinearLayout.LayoutParams pp=new LinearLayout.LayoutParams(30,30); pp.setMargins(10,0,10,0); layout.addView(iv,pp); list_img.add(iv); } } //初始化view private void initview() { vp=view.findViewById(R.id.vp); lv_list=view.findViewById(R.id.lv_list); layout=view.findViewById(R.id.layout); lv_list.setPullLoadEnable(true); //支持xlistview下拉加载上拉刷新 lv_list.setXListViewListener(this);//监听事件 返回两个方法 lv_list.setOnItemClickListener(this); } /** * viewpager的滑动监听事件 * @param position * @param positionOffset * @param positionOffsetPixels */ @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { for (int i = 0; i < list_img.size(); i++) { if(i==position%list_img.size()){ list_img.get(i).setImageResource(R.drawable.check); }else{ list_img.get(i).setImageResource(R.drawable.nornal); } } } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } //xlistview点击事件 @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent=new Intent(getActivity(), ZjActivity.class); intent.putExtra("bookname",list.get(i-1).name); startActivity(intent); } //适配器 public class MyPager extends PagerAdapter{ @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { View view=View.inflate(getActivity(),R.layout.img,null); ImageView lb_img=view.findViewById(R.id.lb_img); DisplayImageOptions options=new DisplayImageOptions.Builder().build(); ImageLoaderConfiguration con=new ImageLoaderConfiguration.Builder(getActivity()).defaultDisplayImageOptions(options).build(); ImageLoader.getInstance().init(con); ImageLoader.getInstance().displayImage(urls.get(position%urls.size()),lb_img); container.addView(view); return view; } } /** * 加载数据 */ class MyAsyncTask extends AsyncTask<String,Integer,String>{ @Override protected String doInBackground(String... strings) { try{ StringBuffer result=new StringBuffer(); URL urll=new URL(strings[0]); HttpURLConnection connection= (HttpURLConnection) urll.openConnection(); connection.connect(); if(200==connection.getResponseCode()){ BufferedReader read=new BufferedReader(new InputStreamReader(connection.getInputStream())); String line=null; while((line=read.readLine())!=null){ result.append(line); } return result.toString(); } }catch (Exception e){ e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { pardata(s);dao.insert(s);//加载数据库里
} } /** * 解析json * @param s */ private void pardata(String s) { try{ JSONObject obj=new JSONObject(s); JSONObject resultobj=obj.getJSONObject("result"); JSONArray ArrayData=resultobj.getJSONArray("bookList"); if(ArrayData!=null&ArrayData.length()>0){ for (int i = 0; i <ArrayData.length() ; i++) { JSONObject data= (JSONObject) ArrayData.get(i); News news=new News(); news.name=data.getString("name"); news.area=data.getString("area"); news.coverImg=data.getString("coverImg"); list.add(news); } } if(list!=null){ book=new ArrayList<>(); for (int i = 0; i <start+5 ; i++) { book.add(list.get(i));//从大集合提出数据放入小集合里 } start+=5; na=new NewsAdapter(getActivity(),book); lv_list.setAdapter(na); lv_list.stopRefresh(); lv_list.stopLoadMore(); } }catch(Exception e){ e.printStackTrace(); } } //刷新 @Override public void onRefresh() { num++; start=0; list.clear(); new MyAsyncTask().execute(url+num); } //加载 @Override public void onLoadMore() { if(start+5<=list.size()){ for (int i = start; i <start+5 ; i++) { book.add(list.get(i)); } start+=5; }else{ getActivity().runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getActivity(),"已没有更多",Toast.LENGTH_SHORT).show(); } }); } lv_list.stopLoadMore(); } //广播监听来判断网络 public class GuangBoPanDuan extends BroadcastReceiver { //配置文件来静态加载 @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = cm.getActiveNetworkInfo(); if (info != null && info.isAvailable()) { String name = info.getTypeName(); new MyAsyncTask().execute(url+num);//有网则从网络上请求数据 if (info.getType() == cm.TYPE_WIFI) { Toast.makeText(context, name, Toast.LENGTH_SHORT).show(); } else if (info.getType() == cm.TYPE_MOBILE) { //3g Toast.makeText(context, name, Toast.LENGTH_SHORT).show(); } } else { //网络断开 Toast.makeText(context, "无网络", Toast.LENGTH_SHORT).show();} } } } //销毁 @Override public void onDestroy() { super.onDestroy(); if (gb!=null){ getActivity().unregisterReceiver(gb); } }}listt=dao.select();for (News news : listt) { // Toast.makeText(context, news.jsonc, Toast.LENGTH_SHORT).show(); pardata(news.jsonc ); }
阅读全文
0 0
- 上拉加载 下拉刷新
- 下拉刷新 * 上拉加载
- 上拉刷新 下拉加载
- 下拉刷新,上拉加载
- 上拉刷新下拉加载
- 下拉刷新,上拉加载
- 上拉刷新,下拉加载
- 上拉刷新下拉加载
- 上拉刷新下拉加载
- 上拉加载,下拉刷新
- 上拉刷新,下拉加载
- 下拉刷新,上拉加载
- 上拉加载,下拉刷新
- 上拉刷新,下拉加载
- 下拉加载上拉刷新
- 下拉刷新-上拉加载
- 上拉刷新,下拉加载
- 上拉加载,下拉刷新
- CRC16校验码生成原理
- 【转载】将自建表数据内容包含在传输请求号中(SAP)
- 【jzoj5333】【NOIP2017提高A组模拟8.23】【大新闻】【可持久化线段树】
- Spring MVC原理及配置详解
- 深入机器学习系列1-序章
- 上拉刷新下拉加载
- 【机器学习-西瓜书】二、偏差-方差分解;泛化误差
- Android Studio快速findViewById
- 微信小程序例子——调起客户端小程序设置界面
- 盘点2017年热度很高的编程语言
- ObjectInputStream与ObjectOutputStream的使用问题-01
- gdb使用
- Springboot整合Redis
- 如何破解「千人千面」,深度解读用户画像