//主布局
<?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);
}
}
}