xml
main_xml
<com.handmark.pulltorefresh.library.PullToRefreshListView/>
header_xml
<RelativeLayout
<view.MyViewPager>
</view.MyViewPager>
<RelativeLayout>
<TextView
/>
<RadioGroup
</RadioGroup>
<TextView
/>
</RelativeLayout>
</RelativeLayout>
package com.bwie.zhoutian;
import android.Manifest;
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RadioGroup;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import adapter.MyAdapter;
import adapter.MyPagerAdapter;
import bean.LunBobean;
import bean.News;
public class MainActivity extends AppCompatActivity {
private PullToRefreshListView pullView;
private ViewPager vp;
private TextView titles;
private TextView nums;
private RadioGroup rg;
private String TAG=MainActivity.class.getSimpleName();
private String[] names={"张三","张三","张三","张三"};
@SuppressLint("HandlerLeak")
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==1){
int item = vp.getCurrentItem();
vp.setCurrentItem(item+1);
handler.sendEmptyMessageDelayed(1,2000);
}
}
};
private String url="http://api.iclient.ifeng.com/ClientNews?id=CJ33,FOCUSCJ33,HNCJ33&action=default&pullNum=";;
private int page=1;
private String fujia="&uid=864678036850608&devid=864678036850608&proid=ifengnews&vt=5&publishid=6103&screen=1080x1920&df=androidphone&os=android_22&nw=wifi";
private ListView listView;
private List<News.ItemBean> list=new ArrayList<>();
private MyAdapter adapter;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
pullView = findViewById(R.id.pull_to_listview);
listView = pullView.getRefreshableView();
View view = View.inflate(MainActivity.this, R.layout.layout_header, null);
vp = view.findViewById(R.id.vp);
titles = view.findViewById(R.id.titles);
nums = view.findViewById(R.id.nums);
rg = view.findViewById(R.id.rg);
listView.addHeaderView(view);
new getDate1().execute("http://api.iclient.ifeng.com/ClientNews?id=CJ33,FOCUSCJ33,HNCJ33&action=default&pullNum=1");
//listView.setAdapter(new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,names));
pullView.setMode(PullToRefreshBase.Mode.BOTH);
new getDate2().execute(url + page + fujia);
pullView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
page=1;
new getDate2().execute(url + page + fujia);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
page++;
new getDate2().execute(url + page + fujia);
}
});
}
class getDate2 extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL(strings[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000);
if (connection.getResponseCode()==200){
return inputStream2Json(connection.getInputStream());
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i(TAG, "onPostExecute: ------"+s);
Gson gson=new Gson();
List<News> news=gson.fromJson(s,new TypeToken<List<News>>(){}.getType());
if (page==1){
list.clear();
adapter = new MyAdapter(MainActivity.this,list);
listView.setAdapter(adapter);
}
list.addAll(news.get(0).getItem());
adapter.notifyDataSetChanged();
pullView.onRefreshComplete();
}
}
class getDate1 extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL(strings[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000);
if (connection.getResponseCode()==200){
return inputStream2Json(connection.getInputStream());
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i(TAG, "onPostExecute: ------"+s);
Gson gson=new Gson();
List<LunBobean> lunbolist=gson.fromJson(s,new TypeToken<List<LunBobean>>(){}.getType());
final List<LunBobean.ItemBean> list = lunbolist.get(0).getItem();
MyPagerAdapter adapter = new MyPagerAdapter(MainActivity.this,list,titles,nums);
vp.setAdapter(adapter);
handler.sendEmptyMessageDelayed(1,2000);
vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
rg.check(rg.getChildAt(position%list.size()).getId());
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
}
private String inputStream2Json(InputStream inputStream) throws IOException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int len=-1;
byte[] b = new byte[1024];
while ((len=inputStream.read(b))!=-1){
outputStream.write(b,0,len);
}
String s = new String(outputStream.toByteArray());
return s;
}
}