无线轮播+GET网络请求数据+xlistview+多条目加载
来源:互联网 发布:为什么酷狗显示没网络 编辑:程序博客网 时间:2024/06/05 11:02
package zhaoshengjie20170724.zhoukao3;import android.os.AsyncTask;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.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.TextView;import com.google.gson.Gson;import com.limxing.xlistview.view.XListView;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.List;import zhaoshengjie20170724.zhoukao3.bean.FoodInfo;import zhaoshengjie20170724.zhoukao3.utils.StreamTools;public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener { private List<String> imageAddress = new ArrayList<>(); private XListView xlistview; private RadioGroup radioGroup; private ViewPager viewPager; private int index = 0; private int index1 = 1; private boolean flag; private Handler handle = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 1: viewPager.setCurrentItem(index); break; } } }; private MyBaseAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //添加图片地址 imageAddress.add("http://img02.sogoucdn.com/app/a/100520093/41425947a62770c7-12a758363cb1c808-9988c098cd3d5ebd43e73e2b2b46ef3b.jpg"); imageAddress.add("http://syimg.focus.cn/upload/photos/280477/IPO8hWiJ.jpg"); imageAddress.add("http://mvimg1.meitudata.com/5624edc8cb04c63.jpg"); imageAddress.add("http://cdn.duitang.com/uploads/item/201406/27/20140627085544_cHFnx.jpeg"); initview(); xlistview.setPullLoadEnable(true); xlistview.setXListViewListener(this); viewPager.setAdapter(new MypagerAdapter()); autoplay(); //imageloader简单配置 ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(configuration); //从网络获取数据 getData("http://apis.juhe.cn/cook/query.php?key=0348a7bbfb2b2175e7bfd45ef47a5324&menu=红烧肉"); //viewpager监听 viewPager.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 < imageAddress.size(); i++) { RadioButton radiobutton = (RadioButton) radioGroup.getChildAt(i); if (i == (position % imageAddress.size())) { radiobutton.setChecked(true); } else { radiobutton.setChecked(false); } } } @Override public void onPageScrollStateChanged(int state) { } }); } /* * 异步请求网络数据 * */ private void getData(final String path) { new AsyncTask<String, Void, String>() { @Override protected void onPostExecute(String s) { super.onPostExecute(s); if (s != null) { Gson gson = new Gson(); FoodInfo foodInfo = gson.fromJson(s, FoodInfo.class); List<FoodInfo.ResultBean.DataBean.StepsBean> list = foodInfo.getResult().getData().get(0).getSteps(); if (adapter == null) { adapter = new MyBaseAdapter(list); xlistview.setAdapter(adapter); } else { adapter.loadmore(list, flag); adapter.notifyDataSetChanged(); } } } @Override protected String doInBackground(String... params) { try { String path = params[0]; URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000);// OutputStream os = connection.getOutputStream();// os.write(("key=0348a7bbfb2b2175e7bfd45ef47a5324&menu=红烧肉" ).getBytes());// os.flush(); if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { InputStream is = connection.getInputStream(); return StreamTools.readFile(is); } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute(path); } private void autoplay() { new Thread() { @Override public void run() { super.run(); while (true) { try { sleep(2000); } catch (Exception e) { e.printStackTrace(); } index++; handle.sendEmptyMessage(1); } } }.start(); } //xlistview上拉下拉加载数据 @Override public void onRefresh() { ++index; getData("http://apis.juhe.cn/cook/query.php?key=0348a7bbfb2b2175e7bfd45ef47a5324&menu=红烧肉"); flag = true; xlistview.stopRefresh(true); } @Override public void onLoadMore() { ++index; getData("http://apis.juhe.cn/cook/query.php?key=0348a7bbfb2b2175e7bfd45ef47a5324&menu=红烧肉"); flag = false; xlistview.stopLoadMore(); } class MyBaseAdapter extends BaseAdapter { private List<FoodInfo.ResultBean.DataBean.StepsBean> list ; private final DisplayImageOptions options; public MyBaseAdapter(List<FoodInfo.ResultBean.DataBean.StepsBean> list ) { this.list = list; options = new DisplayImageOptions.Builder().cacheOnDisk(true).cacheInMemory(true).showImageOnLoading(R.mipmap.ic_launcher).build(); } public void loadmore(List<FoodInfo.ResultBean.DataBean.StepsBean> lists, boolean flag) { for (FoodInfo.ResultBean.DataBean.StepsBean bean : lists) { if (flag) { list.add(0, bean); } else { list.add(bean); } } } @Override public int getCount() { return list != null ? list.size() : 0; } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public int getItemViewType(int position) { if (position % 2 == 0) { return 0; } else { return 1; } } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); ViewHolder holder = null; ViewHolder2 holder2 = null; switch (type) { case 0: { if (convertView == null) { convertView = convertView.inflate(MainActivity.this, R.layout.item1, null); holder = new ViewHolder(); holder.img = (ImageView) convertView.findViewById(R.id.img); holder.txt = (TextView) convertView.findViewById(R.id.txt);// convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } } break; case 1: { if (convertView == null) { convertView = convertView.inflate(MainActivity.this, R.layout.item2, null); holder2 = new ViewHolder2(); holder2.img = (ImageView) convertView.findViewById(R.id.img2); holder2.txt = (TextView) convertView.findViewById(R.id.txt2);// ImageLoader.getInstance().displayImage("http://syimg.focus.cn/upload/photos/280477/IPO8hWiJ.jpg",img,options); convertView.setTag(holder2); } else { holder2 = (ViewHolder2) convertView.getTag(); } } break; } switch (type) { case 0: { ImageLoader.getInstance().displayImage(list.get(position).getImg(),holder.img,options); holder.txt.setText(list.get(position).getStep()); } break; case 1: { ImageLoader.getInstance().displayImage(list.get(position).getImg(),holder2.img,options); holder2.txt.setText(list.get(position).getStep()); } break; } return convertView; } class ViewHolder { ImageView img; TextView txt; } class ViewHolder2 { ImageView img; TextView txt; } } //初始化控件 private void initview() { xlistview = (XListView) findViewById(R.id.xlistview); radioGroup = (RadioGroup) findViewById(R.id.radiogroup); viewPager = (ViewPager) findViewById(R.id.viewpager); } //viewpager适配器 class MypagerAdapter 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 imageView = new ImageView(MainActivity.this); DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheOnDisk(true) .cacheInMemory(true) .showImageOnLoading(R.mipmap.ic_launcher) .build(); ImageLoader.getInstance().displayImage(imageAddress.get(position % imageAddress.size()), imageView, options); container.addView(imageView); return imageView; } }}
阅读全文
1 0
- 无线轮播+GET网络请求数据+xlistview+多条目加载
- 动漫-无限轮播小圆点+判断网络+网络请求+多条目加载XListView+ImageLoader
- handle发送get和post请求网络数据+多条目加载+banner+xlistview+TabLayout
- 网络判断+网络请求+TabLayout+XListview+多条目加载.
- ImageLoader,GET,POST获取数据,多条目加载,XListView
- MVP框架+RXJava+reftorfit请求网络数据+XRecycleView多条目展示(banner轮播+条目展示、刷新加载)、点击事件+fresco图片加载
- 无线轮播从网络加载图片 拉取数据get解析
- xlistview多条目加载
- XlistView多条目加载
- 封装请求网络数据 显示XListView 加多条目展示
- 轮播 多条目加载
- 判断网络状态 fragment隐藏显示 xlistview多条目加载数据
- Banner轮播 + XlistView 网络获取数据
- RecyclerView多条目加载(网络请求数据)
- 侧滑,无线轮播,Xlistview
- XListView多条目加载adpter
- XlistView的多条目加载
- XListView请求网络数据
- poj 3414 Pots(BFS)(简单题)
- ionic中AlertController设置
- main函数的返回值问题
- [libkcp] Abstract
- 同余定理
- 无线轮播+GET网络请求数据+xlistview+多条目加载
- 01、TextView
- linux内核怎么配置cpu为arm
- mesos 配置
- 20170727 JAVA练习题:输入一个三位数字,将其倒序组合输出
- 完全用Linux工作,抛弃windows
- RabbitMQ报错Error: unable to connect to node rabbit@xxx: nodedown的解决方式
- 使用c++11写个最简跨平台线程池(转载)
- 20170727 JAVA练习题:运用if else根据分数分成绩等级