viewpager+xListivew

使用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;
    }
}
//CycleViewPagerHandler
package 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值