MainActivity:
package com.example.monthtest;
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.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bawei.wzq.wzlibrary.view.XListView;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {
String path = "http://www.meirixue.com/api.php?c=index&a=index";
private ViewPager vp;
private List<ImageView> listIV;
private View headerView;
private XListView xlv;
private LinearLayout ll;
private List<Bean.DataBean.HotcategoryBean> hotcategory;
private List<Bean.DataBean.AdlistBean> adlist;
private DisplayImageOptions options;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//得到当前的position
int position = vp.getCurrentItem();
position++;
vp.setCurrentItem(position);
sendMsg();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xlv = (XListView) findViewById(R.id.xlv);
//viewpager的布局
headerView = View.inflate(MainActivity.this, R.layout.vp_item, null);
ll = (LinearLayout) headerView.findViewById(R.id.ll);
vp = (ViewPager) headerView.findViewById(R.id.vp);
//sd卡
options = new DisplayImageOptions.Builder()
.cacheOnDisk(true) //sd卡
.cacheInMemory(true)
.build();
initData();
}
/**
* 请求网络得数据
*/
private void initData() {
new AsyncTask<String, Void, String>() {
/**
* 子线程
* @param params
* @return
*/
@Override
protected String doInBackground(String... params) {
String json = NetWorkUtils.getJson(params[0]);
return json;
}
/**
* 主线程
* @param s
*/
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
Bean bean = gson.fromJson(s, Bean.class);
//展示viewPager上面的图片的
adlist = bean.getData().getAdlist();
//展示xListView上面的数据
hotcategory = bean.getData().getHotcategory();
xlv.setAdapter(new MAdapter());
xlv.setXListViewListener(MainActivity.this);
//给xlistView加载头布局
xlv.addHeaderView(headerView);
vp.setAdapter(new MPagerAdapter());
//初使化点
initDot();
vp.setCurrentItem(10000);
//无限轮博
sendMsg();
//监听事件
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int x = 0; x < listIV.size(); x++) {
if (position % adlist.size() == x) {
listIV.get(position % adlist.size()).setImageResource(R.drawable.dot_focus);
} else {
listIV.get(x).setImageResource(R.drawable.dot_normal);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
}.execute(path);
}
private void sendMsg() {
handler.sendEmptyMessageDelayed(0, 2000);
}
/**
*
*/
private void initDot() {
listIV = new ArrayList<>();
if (listIV != null) {
listIV.clear();
}
for (int x = 0; x < adlist.size(); x++) {
ImageView iv = new ImageView(MainActivity.this);
if (x == 0) {
iv.setImageResource(R.drawable.dot_focus);
} else {
iv.setImageResource(R.drawable.dot_normal);
}
listIV.add(iv);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20);
params.setMargins(10, 0, 10, 0);
ll.addView(iv, params);
}
}
/**
* 下拉刷新
*/
@Override
public void onRefresh() {
new Thread() {
@Override
public void run() {
super.run();
String json = NetWorkUtils.getJson(path);
Gson gson = new Gson();
Bean bean = gson.fromJson(json, Bean.class);
//展示viewPager上面的图片的
adlist = bean.getData().getAdlist();
//展示xListView上面的数据
List hotcategory1 = bean.getData().getHotcategory();
hotcategory.addAll(hotcategory1);
//没做完,需要重新设置adapter
}
}.start();
}
/**
* 加载更多
*/
@Override
public void onLoadMore() {
}
class MPagerAdapter 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) {
ImageView iv = new ImageView(MainActivity.this);
//加载viewPager上面的图片
ImageLoader.getInstance().displayImage(adlist.get(position % adlist.size()).getImg(), iv, options);
container.addView(iv);
return iv;
}
}
/**
* xListView的adapter
*/
class MAdapter extends BaseAdapter {
@Override
public int getCount() {
return hotcategory.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) {
if (convertView == null) {
convertView = View.inflate(MainActivity.this, R.layout.xlv_item, null);
}
ImageView xlv_iv = (ImageView) convertView.findViewById(R.id.xlv_iv);
TextView xlv_tv = (TextView) convertView.findViewById(R.id.xlv_tv);
//展示图片
ImageLoader.getInstance().displayImage(hotcategory.get(position).getImg(), xlv_iv, options);
//文字
xlv_tv.setText(hotcategory.get(position).getCname());
return convertView;
}
}
}
Application:
ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(build);
NetWork:
package com.bwei.yuekaomouth; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; /** * author:Created by WangZhiQiang on 2017/9/15. */ public class NetWork { private static StringBuilder stringBuilder; public static String getJson(String string) { try { URL url = new URL(string); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); int responseCode = urlConnection.getResponseCode(); if(responseCode==200) { InputStream inputStream = urlConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); stringBuilder = new StringBuilder(); String str = ""; while((str = bufferedReader.readLine())!=null) { stringBuilder.append(str); } } return stringBuilder.toString(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } }