简单PullToRefreshListView+ViewPager无限轮播
来源:互联网 发布:access数据库文件名 编辑:程序博客网 时间:2024/06/05 03:47
//主布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout android:id="@+id/llll" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.lxb.MainActivity"><com.handmark.pulltorefresh.library.PullToRefreshListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/pt" ></com.handmark.pulltorefresh.library.PullToRefreshListView></LinearLayout>
//viewpager 的布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/vp" ></android.support.v4.view.ViewPager> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/ll" android:orientation="horizontal" ></LinearLayout></LinearLayout>//listview展示数据的布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" ><ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/img" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/name" /></LinearLayout>//代码
package com.example.lxb;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private PullToRefreshListView pt; private ViewPager vp; List<User> list=new ArrayList<User>(); int i=1; private MainActivity.ptdata ptdata; private ArrayList<ImageView> imagelist; private LinearLayout ll; private ImageView view;//延时 Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int i = vp.getCurrentItem() + 1; vp.setCurrentItem(i); handler.sendEmptyMessageDelayed(0,2000); } }; private List<Bean.NewslistBean> newslist; private LinearLayout lll; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pt =(PullToRefreshListView)findViewById(R.id.pt); View view = View.inflate(MainActivity.this, R.layout.vp, null); vp=(ViewPager)view.findViewById(R.id.vp); ll =(LinearLayout)view.findViewById(R.id.ll); ListView listView = pt.getRefreshableView(); listView.addHeaderView(view); pt.setMode(PullToRefreshBase.Mode.BOTH); ptdata = new ptdata(); pt.setAdapter(ptdata); handler.sendEmptyMessageDelayed(0,2000); //异步线程操作 new Mysanysk().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10"); pt.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { ll.removeAllViews(); list.clear(); i=1; new Mysanysk().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10"); ptdata.notifyDataSetChanged(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { i++; new Mysanysk().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num="+i); } }); vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i=0;i<imagelist.size();i++){ if(position%newslist.size()==i){ imagelist.get(position%newslist.size()).setImageResource(R.drawable.dot_focus); }else{ imagelist.get(i).setImageResource(R.drawable.dot_normal); } } } @Override public void onPageScrollStateChanged(int state) { } }); }//加点方法 private void nodata() { imagelist =new ArrayList<ImageView>(); if(imagelist!=null){ imagelist.clear(); } for (int i=0;i<newslist.size();i++){ view = new ImageView(this); if(i==vp.getCurrentItem()){ view.setImageResource(R.drawable.dot_focus); }else{ view.setImageResource(R.drawable.dot_normal); } LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20); params.setMargins(10,0,10,0); imagelist.add(view); ll.addView(view,params); } } class Mysanysk extends AsyncTask<String,Void,String>{ private URL url; private StringBuilder builder; @Override protected String doInBackground(String... strings) { try { url = new URL(strings[0]); URLConnection connection = url.openConnection(); InputStream stream = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); builder = new StringBuilder(); String tem=""; while((tem=reader.readLine())!=null){ builder.append(tem); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Log.e("=======读取到的数据==========",builder.toString()); return builder.toString(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); newslist = bean.getNewslist(); for (int i = 0; i< newslist.size(); i++){ String picUrl = newslist.get(i).getPicUrl(); String title = newslist.get(i).getTitle(); list.add(new User(title,picUrl)); } vp.setAdapter(new vpdata()); nodata(); ptdata.notifyDataSetChanged();//刷新适配器 pt.onRefreshComplete();//关闭方法 } } class ptdata extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder vh; if(view==null){ vh=new ViewHolder(); view=View.inflate(MainActivity.this,R.layout.textview,null); vh.name=(TextView)view.findViewById(R.id.name); vh.img=(ImageView)view.findViewById(R.id.img); view.setTag(vh); }else{ vh=(ViewHolder)view.getTag(); } vh.name.setText(list.get(i).name); ImageLoader.getInstance().displayImage(list.get(i).url,vh.img); return view; } class ViewHolder{ TextView name; ImageView img; } } class vpdata extends PagerAdapter { @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, int position) { String picUrl = newslist.get(position%newslist.size()).getPicUrl(); View view = View.inflate(MainActivity.this,R.layout.vptextview,null); ImageView img=(ImageView)view.findViewById(R.id.img2); ImageLoader.getInstance().displayImage(picUrl,img); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View)object); } }}
阅读全文
0 0
- 简单PullToRefreshListView+ViewPager无限轮播
- PullToRefreshListView+ViewPager无限轮播
- ViewPager无限轮播+PullTOrefreshListView
- 简单的ViewPager无限轮播
- ViewPager无限轮播,简单实现
- viewpager无限轮播
- Viewpager无限轮播
- Viewpager无限轮播
- ViewPager无限轮播
- ViewPager无限轮播
- ViewPager无限轮播
- VieWPager无限轮播
- viewpager无限轮播
- viewpager无限轮播
- viewpager无限轮播
- viewpager 无限轮播
- ViewPager无限轮播
- ViewPager无限轮播
- 弹层高度不固定,始终上下居中
- mfc/vc slider control控件 鼠标左键点击后直接滑到点击的位置
- IIS7错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny")......
- CAD转换PDF技巧分享 手把手教你快速转换CAD文件
- Swift正式选用超级账本Fabric技术,节约30%跨境支付成本
- 简单PullToRefreshListView+ViewPager无限轮播
- tcp/ip协议栈-tcp层(1)
- apache 部署https报错
- Ubuntu进入root权限和退出(su,sudo)
- Windows下Maven的安装与配置
- ModifyStyle
- 图解SparkContext创建过程
- 适配器模式(Adapter)
- 2.Button按钮实例:普通按钮和图片按钮