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
- viewpager+xListivew
- xlistivew+数据展示+进入详情+圆角图片
- Viewpager
- ViewPager
- ViewPager
- ViewPager
- ViewPager
- ViewPager
- viewpager
- ViewPager
- ViewPager
- ViewPager
- Viewpager
- viewpager
- ViewPager
- ViewPager
- ViewPager
- viewpager
- BZOJ 1025: [SCOI2009]游戏|动态规划
- 解惑tomcat如何将标准输出保存到文件——重定向System.out
- 生产、消费者模式
- C++中的虚函数表
- 解决 Linux/Ubuntu: adb shell insufficient permissions for device 的问题
- viewpager+xListivew
- JAVA并发处理经验(二)JAVA线程池运用与并发工具
- 比sublime好用的atom编辑器
- 2W人脸标注方法
- Job的输入切片机制及源码流程
- 解决Popupwindow上移动后不会恢复或图片被挤压的解决办法
- body高度与内容总高度不一致问题
- 【C语言提高52】链表的基本操作
- 选择不做什么,比选择做什么更重要