import android.content.Context; import android.os.AsyncTask; 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.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 com.youth.banner.Banner; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private PullToRefreshListView pull; String httpUrl="http://www.meirixue.com/api.php?c=index&a=index"; List<Bean.DataBean.SliderBean> getlist = new ArrayList<>(); private MyBaseAdapter my; private ImageLoader instance; private ListView refreshableView; private Banner ban; List<String> listimg = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pull = (PullToRefreshListView) findViewById(R.id.pull_refresh_list); pull.setMode(PullToRefreshBase.Mode.BOTH); my = new MyBaseAdapter(); pull.setAdapter(my); getAsyncTask(); instance = ImageLoader.getInstance(); //通过getRefreshableView()来得到一个listview对象 refreshableView = pull.getRefreshableView(); //获取Banner的布局 View inflate = View.inflate(MainActivity.this, R.layout.f2, null); //获取控件 ban = (Banner)inflate.findViewById(R.id.ban); //refreshableView来添加头文件 refreshableView.addHeaderView(inflate); //pull的点击事件 上拉 下拉 pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { getlist.clear(); getAsyncTask(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { getAsyncTask(); } }); } //执行banner的方法 public void getban(){ ban.setImageLoader(new Mode());//配置重写好的加载图片的类 ban.setImages(listimg);//需要传入一个图片地址的集合 ban.start(); //开启轮播 } /** * 这个类是Banner中的一个类;我们进行重写; */ class Mode extends com.youth.banner.loader.ImageLoader{ //这个就是专门让我们重写,加载图片的具体逻辑 @Override public void displayImage(Context context, Object path, ImageView imageView) { //调用图片的全局适配 ImageLoader.getInstance().displayImage((String)path,imageView); } } class MyBaseAdapter extends BaseAdapter{ @Override public int getCount() { return getlist.size(); } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if(view==null){ view = View.inflate(MainActivity.this, R.layout.f1, null); } ImageView img = view.findViewById(R.id.img); TextView tv = view.findViewById(R.id.tv); tv.setText(getlist.get(i).getTitle()); instance.displayImage(getlist.get(i).getImg(),img); return view; } } public void getAsyncTask(){ new MyAsyncTask().execute(httpUrl); } class MyAsyncTask extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { return IToos.ioss(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson g=new Gson(); Bean bean = g.fromJson(s, Bean.class); List<Bean.DataBean.SliderBean> slider = bean.getData().getSlider(); getlist.addAll(slider); my.notifyDataSetChanged(); pull.onRefreshComplete(); //获取banner的图片路径 List<Bean.DataBean.HotcategoryBean> hotcategory = bean.getData().getHotcategory(); for (int i=0;i<hotcategory.size();i++){ //取出路径 String img = hotcategory.get(i).getImg(); listimg.add(img);//添加 } getban();//调用banner的方法 } } }
使用addHeaderView给PulltoRefreshListView的添加Banner
最新推荐文章于 2018-11-21 13:52:33 发布