viewpager+xListivew

来源:互联网 发布:财务公司待遇 知乎 编辑:程序博客网 时间:2024/06/03 18:10

使用xlistview加载数据+viewpager加载轮播图(imageloader图片加载)虽然是一个很常见的功能但是里面涉及的知识点却是比较多的。下面我们就将主要的代码进行揭秘。
(1)使用xlistview进行数据加载可以实现下拉刷新,下拉加载数据,同时将viewpager作为头部添加在xlistview上面。

import com.example.viewpagerlistviewdemo.adapter.ListViewAdapter;import com.example.viewpagerlistviewdemo.util.DemoUtil;import com.example.viewpagerlistviewdemo.util.ViewFactory;import com.example.viewpagerlistviewdemo.view.XListView;import com.example.viewpagerlistviewdemo.view.XListView.IXListViewListener;import com.example.viewpagerlistviewdemo.viewpager.CycleViewPager;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.os.Handler;import android.view.LayoutInflater;import android.view.View;import android.widget.Toast;public class MainActivity extends Activity implements IXListViewListener {    // 只是用来模拟异步获取数据    private Handler handler;    private XListView mListView;    private Context context = MainActivity.this;    private View vhdf;    private CycleViewPager cycleViewPager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        handler = new Handler();        mListView = (XListView) findViewById(R.id.xListView);        // 设置xlistview可以加载、刷新        mListView.setPullLoadEnable(true);        mListView.setPullRefreshEnable(true);        mListView.setXListViewListener(this);    mListView.setRefreshTime(DemoUtil.getDetailTime(System.currentTimeMillis() + ""));        // listview中添加数据(20条)        mListView.setAdapter(new ListViewAdapter(context, DemoUtil.demoData()));        vhdf = LayoutInflater.from(context).inflate(R.layout.viewpager, null);        cycleViewPager = (CycleViewPager) getFragmentManager().findFragmentById(R.id.fragment_cycle_viewpager_content);        ViewFactory.initialize(context, vhdf, cycleViewPager, DemoUtil.cycData());        // listivew头部添加轮播图        mListView.addHeaderView(vhdf);    }    @Override    public void onRefresh() {        handler.postDelayed(new Runnable() {            @Override            public void run() {                mListView.stopRefresh();                Toast.makeText(context, "刷新", 30).show();            }        }, 1000);    }    @Override    public void onLoadMore() {        // TODO Auto-generated method stub        handler.postDelayed(new Runnable() {            @Override            public void run() {                mListView.stopRefresh();                mListView.setPullLoadEnable(false);                Toast.makeText(context, "加载更多", 30).show();            }        }, 1000);    }}

(2)实现图片轮播

package com.example.viewpagerlistviewdemo.util;import java.util.ArrayList;import java.util.List;import com.example.viewpagerlistviewdemo.R;import com.example.viewpagerlistviewdemo.model.CycleVpEntity;import com.example.viewpagerlistviewdemo.viewpager.CycleViewPager;import com.example.viewpagerlistviewdemo.viewpager.CycleViewPager.ImageCycleViewListener;import com.nostra13.universalimageloader.core.ImageLoader;import android.app.AlertDialog;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;import android.widget.Toast;public class ViewFactory {    /**     * 轮播广告图     */    public static void initialize(final Context context,View vhdf,final CycleViewPager cycleViewPager,List<CycleVpEntity> cycentiy) {        //vhdf = getLayoutInflater().inflate(R.layout.viewpage, null);        //cycleViewPager=(CycleViewPager)getFragmentManager().findFragmentById(R.id.fragment_cycle_viewpager_content);        List<CycleVpEntity> infos = new ArrayList<CycleVpEntity>();        List<ImageView> views = new ArrayList<ImageView>();        for(int i = 0; i < cycentiy.size(); i ++){            CycleVpEntity info = new CycleVpEntity();            info.setIurl(cycentiy.get(i).getIurl());            info.setTitle(cycentiy.get(i).getTitle());            info.setCurl(cycentiy.get(i).getCurl());            infos.add(info);        }        // 将最后一个ImageView添加进来        views.add(ViewFactory.getImageView(context, infos.get(infos.size() - 1).getIurl()));        for (int i = 0; i < infos.size(); i++) {            views.add(ViewFactory.getImageView(context, infos.get(i).getIurl()));        }        // 将第一个ImageView添加进来        views.add(ViewFactory.getImageView(context, infos.get(0).getIurl()));        // 设置循环,在调用setData方法前调用        cycleViewPager.setCycle(true);        // 在加载数据前设置是否循环        cycleViewPager.setData(views, infos, new ImageCycleViewListener() {            @Override            public void onImageClick(CycleVpEntity info, int postion, View imageView) {                // TODO Auto-generated method stub                if (cycleViewPager.isCycle()) {                    postion = postion - 1;                    Toast.makeText(context, postion, Toast.LENGTH_SHORT).show();//                  new AlertDialog(context).builder()//                  .setMsg("position:"+postion)//                  .setNegativeButton("确定", new OnClickListener() {//                      @Override//                      public void onClick(View v) {////                      }//                  }).show();                }            }        });        //设置轮播        cycleViewPager.setWheel(true);        // 设置轮播时间,默认5000ms        cycleViewPager.setTime(2000);        //设置圆点指示图标组居中显示,默认靠右        cycleViewPager.setIndicatorCenter();    }    /**     * 获取ImageView视图的同时加载显示url     *      * @param text     * @return     */    public static ImageView getImageView(Context context, String url) {        ImageView imageView = (ImageView)LayoutInflater.from(context).inflate(                R.layout.view_banner, null);        ImageLoader.getInstance().displayImage(url, imageView);        return imageView;    }}//CycleViewPagerHandlerpackage com.example.viewpagerlistviewdemo.viewpager;import android.content.Context;import android.os.Handler;/** * 为了防止内存泄漏,定义外部类,防止内部类对外部类的引用 */public class CycleViewPagerHandler extends Handler {     Context context;    public CycleViewPagerHandler(Context context) {        this.context = context;    }};

(3)图片加载使用imageloader imageloader图片加载

这里写链接内容

0 0
原创粉丝点击