======================MainActivity===========================
public class MainActivity extends AppCompatActivity {
private String path ="http://www.xieast.com/api/news/news.php?page=";
private int page = 1;
private PullAdapter pullAadpder;
private PullToRefreshListView pullListView;
private HttpUtils httpUtils;
private List<Goods.DataBean> goodsList = new ArrayList <> ();
//侧滑
private DrawerLayout drawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
drawerLayout = findViewById (R.id.dw);
pullListView = findViewById (R.id.pull);
//数据解析
setDataJson();
pullListView.setOnItemClickListener (new AdapterView.OnItemClickListener () {
@Override
public void onItemClick(AdapterView <?> parent, View view, int position, long id) {
Goods.DataBean bean = (Goods.DataBean) parent.getAdapter ().getItem (position);
Intent intent = new Intent (MainActivity.this,WebActivity.class);
intent.putExtra ("url",bean.getUrl ());
startActivity (intent);
}
});
}
private void setDataJson() {
httpUtils = HttpUtils.getInstance ();
httpUtils.getDataFromServer (path + page);
httpUtils.setNetCallback (new HttpUtils.NetCallback () {
@Override
public void onSuccess(String result) {
Gson gson = new Gson ();
Log.i ("aaaa", result);
Goods goods = gson.fromJson (result, Goods.class);
if (page == 1) {
goodsList.clear ();
}
goodsList.addAll (goods.getData ());
pullAadpder.notifyDataSetChanged ();
}
});
pullAadpder = new PullAdapter (goodsList, this);
pullListView.setAdapter (pullAadpder);
pullListView.setMode (PullToRefreshExpandableListView.Mode.BOTH);
pullListView.setOnRefreshListener (new PullToRefreshBase.OnRefreshListener2 <ListView> () {
@Override
public void onPullDownToRefresh(PullToRefreshBase <ListView> refreshView) {
//刷新
page = 1;
httpUtils.getDataFromServer (path + page);
pullListView.postDelayed (new Runnable () {
@Override
public void run() {
pullListView.onRefreshComplete ();
}
}, 1000);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase <ListView> refreshView) {
//加载
page++;
httpUtils.getDataFromServer (path + page);
pullListView.postDelayed (new Runnable () {
@Override
public void run() {
pullListView.onRefreshComplete ();
}
}, 1000);
}
});
}
}
===============上面是MainActivity========================
========================下面是webActivity======================
public class WebActivity extends AppCompatActivity {
private String spec = "https://api.yunxuekeji.cn/yunxue_app_api/content/getIndexBanner/1";
private WebView webView;
private MyAdapter myAdapter;
int len = 0 ;
private List<ImageView> vlist = new ArrayList<> ();
private ViewPager viewPager;
private Handler handler = new Handler (){
@Override
public void handleMessage(Message msg) {
if (msg.what == 0){
String json = (String) msg.obj;
Gson gson = new Gson ();
Beans beans = gson.fromJson (json, Beans.class);
List <Beans.BodyBean.ResultBean> result = beans.getBody ().getResult ();
for (int i = 0 ; i< result.size ();i++){
String pic = result.get (i).getBarnerPic ();
ImageView imageView = new ImageView (WebActivity.this);
vlist.add (imageView);
ImageLoader.getInstance ().displayImage (pic,imageView);
myAdapter = new MyAdapter (vlist,WebActivity.this);
viewPager.setAdapter (myAdapter);
}
}else if (msg.what == 1){
int i = viewPager.getCurrentItem ();
i++;
viewPager.setCurrentItem (i);
handler.sendEmptyMessageDelayed (1,1000);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_web);
webView = findViewById (R.id.web);
viewPager = findViewById (R.id.vp);
webView.setWebViewClient (new WebViewClient (){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted (view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished (view, url);
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource (view, url);
}
@Override
public void onPageCommitVisible(WebView view, String url) {
super.onPageCommitVisible (view, url);
}
});
webView.loadUrl (getIntent ().getStringExtra ("url"));
jieXi(spec);
}
//这是轮播图的
private void jieXi(final String spec) {
new Thread () {
@Override
public void run() {
try {
URL url = new URL (spec);
HttpURLConnection connection = (HttpURLConnection) url.openConnection ();
connection.setConnectTimeout (3000);
connection.setReadTimeout (3000);
if (connection.getResponseCode () == 200) {
InputStream inputStream = connection.getInputStream ();
ByteArrayOutputStream bos = new ByteArrayOutputStream ();
byte[] bytes = new byte[1024];
while ((len = inputStream.read (bytes)) != -1) {
bos.write (bytes, 0, len);
}
//关流
inputStream.close ();
bos.close ();
String json = bos.toString ();
Message message = new Message ();
message.what = 0;
message.obj = json;
handler.sendMessage (message);
}
} catch (Exception e) {
e.printStackTrace ();
}
}
}.start ();
}
@Override
protected void onResume() {
super.onResume ();
handler.sendEmptyMessageDelayed(1,1000);
}
@Override
protected void onPause() {
super.onPause ();
handler.removeCallbacksAndMessages(null);
}
}
==========================================上面是webActivity============================================
===================下面是httputils=================================
public class HttpUtils {
private static final HttpUtils ourInstance = new HttpUtils ();
public static HttpUtils getInstance() {
return ourInstance;
}
private HttpUtils() {
}
/**
* 接口回调实现过程
* 1. 定义一个接口
* 2. 声明一个引用
* 3. 给引用设值
*/
public interface NetCallback {
void onSuccess(String result);
}
private NetCallback netCallback;
public void setNetCallback(NetCallback netCallback) {
this.netCallback = netCallback;
}
/**
* 从网络获取数据
* 有二中方案
* 1. Thread+HttpUrlConnection/HttpClient+Handler
* 2. AsyncTask+HttpUrlConnection/HttpClient
*/
public void getDataFromServer(String url) {
new LoadData ().execute (url);
}
/**
* 请求网络数据的类
*/
class LoadData 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 (3000);
connection.setReadTimeout (3000);
if (connection.getResponseCode () == HttpURLConnection.HTTP_OK) {
return CharStreams.toString (new InputStreamReader (connection.getInputStream (), "UTF-8"));
}
} catch (Exception e) {
e.printStackTrace ();
}
return null;
}
@Override
protected void onPostExecute(String s) {
if (netCallback != null) {
netCallback.onSuccess (s);
}
}
}
}
====================上面是httputils============================
图片的适配器/
public class MyAdapter extends PagerAdapter {
private List<ImageView> vlist;
private Context context;
public MyAdapter(List <ImageView> vlist, Context context) {
this.vlist = vlist;
this.context = context;
}
@Override
public int getCount() {
return vlist.size ();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = vlist.get(position % vlist.size());
ViewGroup parent = (ViewGroup) imageView.getParent();
if (parent != null) {
parent.removeView (imageView);
}
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView ((View) object);
}
}
//上面是图片的适配器//
/数据的适配器//
public class PullAdapter extends BaseAdapter {
private List<Goods.DataBean> goodList;
private Context context;
public PullAdapter(List <Goods.DataBean> goodList, Context context) {
this.goodList = goodList;
this.context = context;
}
private final int ONE_ITEM =1;
private final int TWO_ITEM =2;
@Override
public int getItemViewType(int position) {
String thumbnail_pic_s = goodList.get (position).getThumbnail_pic_s ();
String thumbnail_pic_s02 = goodList.get (position).getThumbnail_pic_s02 ();
String thumbnail_pic_s03 = goodList.get (position).getThumbnail_pic_s03 ();
if (thumbnail_pic_s != null && thumbnail_pic_s02 == null && thumbnail_pic_s03 == null){
return ONE_ITEM;
}else if (thumbnail_pic_s != null && thumbnail_pic_s02 != null && thumbnail_pic_s03 != null){
return TWO_ITEM;
}else {
return ONE_ITEM;
}
}
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public int getCount() {
return goodList.size ();
}
@Override
public Object getItem(int position) {
return goodList.get (position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int i = getItemViewType (position);
if (i == ONE_ITEM){
ViewHolderOne holderOne;
if (convertView == null){
holderOne = new ViewHolderOne ();
convertView = View.inflate (context,R.layout.layout_item,null);
holderOne.text_author_name = convertView.findViewById (R.id.text_author_name);
holderOne.text_date = convertView.findViewById (R.id.text_date);
holderOne.imag_picOne = convertView.findViewById (R.id.imag_picOne);
convertView.setTag (holderOne);
}else {
holderOne = (ViewHolderOne) convertView.getTag ();
}
holderOne.text_author_name.setText (goodList.get (position).getAuthor_name ());
holderOne.text_date.setText (goodList.get (position).getDate ());
ImageLoader.getInstance ().displayImage (goodList.get (position).getThumbnail_pic_s (),holderOne.imag_picOne);
return convertView;
}else if (i==TWO_ITEM){
ViewHolderTwo holderTwo;
if (convertView == null){
holderTwo = new ViewHolderTwo ();
convertView = View.inflate (context,R.layout.layout_item_two,null);
holderTwo.text_author_name_two = convertView.findViewById (R.id.text_author_name_two);
holderTwo.text_date_two = convertView.findViewById (R.id.text_date_two);
holderTwo.imag_picTwo = convertView.findViewById (R.id.imag_picTwo);
holderTwo.imag_picTwo2 = convertView.findViewById (R.id.imag_picTwo2);
holderTwo.imag_picTwo3 = convertView.findViewById (R.id.imag_picTwo3);
convertView.setTag (holderTwo);
}else {
holderTwo = (ViewHolderTwo) convertView.getTag ();
}
holderTwo.text_author_name_two.setText (goodList.get (position).getAuthor_name ());
holderTwo.text_date_two.setText (goodList.get (position).getDate ());
ImageLoader.getInstance ().displayImage (goodList.get (position).getThumbnail_pic_s (),holderTwo.imag_picTwo);
ImageLoader.getInstance ().displayImage (goodList.get (position).getThumbnail_pic_s02 (),holderTwo.imag_picTwo2);
ImageLoader.getInstance ().displayImage (goodList.get (position).getThumbnail_pic_s03 (),holderTwo.imag_picTwo3);
return convertView;
}
return null;
}
class ViewHolderOne{
TextView text_author_name,text_date;
ImageView imag_picOne;
}
class ViewHolderTwo{
TextView text_author_name_two,text_date_two;
ImageView imag_picTwo,imag_picTwo2,imag_picTwo3;
}
}
//上面是数据的适配器//