ScrollView 效果


ScrollView 说明

一个ScrollView 嵌套ListView 嵌套GridView的上拉加载更多,下拉刷新的demo。
主要是重写了GridView和LsitView中的onMeasure 方法。
写的比较简单,希望对初学者有帮助。
/***
* 主要思路是
* ScrollView 嵌套ListView 嵌套GridView的上拉加载更多,下拉刷新。
*
* 逻辑在适配器做了处理
*
* 我们只让ListView加载2个数据Item,第一个是item对象,第二个是一个对象
*
*/
public class MainActivity extends Activity implements OnHeaderRefreshListener,
OnFooterRefreshListener { MyAdapter myAdapter;
// 自定义的GridView的上下拉动刷新
private PullToRefreshView mPullToRefreshView;
private MyListView listView;
private List<Integer> data;
private List<Integer> gridViewData; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPullToRefreshView = (com.example.demo.PullToRefreshView) findViewById(R.id.main_pull_refresh_view);
listView = (MyListView) findViewById(R.id.gridView1);
myAdapter = new MyAdapter(this);
data = new ArrayList<Integer>();
gridViewData = new ArrayList<Integer>();
for (int i = ; i < ; i++) {
data.add(i);
} for (int i = ; i < ; i++) {
if (i % == ) {
gridViewData.add(R.drawable.pic1);
} else {
gridViewData.add(R.drawable.pic2);
} }
myAdapter.setData(data);
myAdapter.setGridViewData(gridViewData);
listView.setAdapter(myAdapter); mPullToRefreshView.setOnHeaderRefreshListener(this);
mPullToRefreshView.setOnFooterRefreshListener(this);
mPullToRefreshView.setLastUpdated(new Date().toLocaleString());
} @Override
public void onHeaderRefresh(PullToRefreshView view) {
mPullToRefreshView.postDelayed(new Runnable() {
@Override
public void run() {
mPullToRefreshView.onHeaderRefreshComplete("更新于:"
+ Calendar.getInstance().getTime().toLocaleString());
mPullToRefreshView.onHeaderRefreshComplete(); Toast.makeText(MainActivity.this, "数据刷新完成!", ).show();
} }, ); } @Override
public void onFooterRefresh(PullToRefreshView view) {
mPullToRefreshView.postDelayed(new Runnable() { @Override
public void run() {
mPullToRefreshView.onFooterRefreshComplete();
gridViewData.add(R.drawable.pic1);
myAdapter.setGridViewData(gridViewData);
Toast.makeText(MainActivity.this, "加载更多数据!", ).show();
} }, ); } /**
*
* lsitView的适配器
*
* @author lyy
*
*/
public class MyAdapter extends BaseAdapter {
Context context;
private List<Integer> data; /***
* listview item position==2
*
* GridView里面的数据
*
*/
private List<Integer> gridViewData;
private GridViewAdapter gridViewAdapter; /** ListView 的数据 **/
public void setData(List<Integer> data) {
this.data = data;
this.notifyDataSetChanged();
} /*** gridView的数据 **/ public void setGridViewData(List<Integer> gridViewData) {
this.gridViewData = gridViewData; this.notifyDataSetChanged(); } public MyAdapter(Context context) {
this.context = context; } @Override
public int getCount() {
// TODO Auto-generated method stub
return ;
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return data.get(position);
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) { if (position == ) { return listView();
} else { return gridView();
} } public View listView() {
View view = null;
if (view == null) {
view = LayoutInflater.from(context).inflate(R.layout.item, null);
} ImageView imageView1 = (ImageView) view.findViewById(R.id.imageView1);
return view;
} public View gridView() { View view = LayoutInflater.from(context).inflate(R.layout.item1, null);
GridView myGridView = (GridView) view.findViewById(R.id.gridView1); if (gridViewAdapter == null)
gridViewAdapter = new GridViewAdapter(context); gridViewAdapter.setData(gridViewData);
myGridView.setAdapter(gridViewAdapter); myGridView.setOnItemClickListener(onItemClickListener);
return view;
} private OnItemClickListener onItemClickListener = new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
Toast.makeText(context, "你点击的是:" + position, ).show(); } };
}

ScrollView下载

 http://yunpan.cn/cAF8SgMWUAXrP  提取码 917c

ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多的更多相关文章

  1. Android UI--自定义ListView(实现下拉刷新+加载更多)

    Android UI--自定义ListView(实现下拉刷新+加载更多) 关于实现ListView下拉刷新和加载更多的实现,我想网上一搜就一堆.不过我就没发现比较实用的,要不就是实现起来太复杂,要不就 ...

  2. ListView下拉刷新,上拉自动加载更多

    下拉刷新,Android中非常普遍的功能.为了方便便重写的ListView来实现下拉刷新,同时添加了上拉自动加载更多的功能.设计最初是参考开源中国的Android客户端源码.先看示例图.       ...

  3. scroll-view组件实现下拉刷新, 拉到底加载更多

    官方文档已声明,即使在page.json和app.json中开启下拉刷新,scroll-view组件也是不支持的.但我们可以通过曲线救国的方法来实现 实现代码 // wxml <scroll-v ...

  4. PullToRefresh下拉刷新 加载更多 详解 +示例

    常用设置 项目地址:https://github.com/chrisbanes/Android-PullToRefresh a. 设置刷新模式 如果Mode设置成Mode.PULL_FROM_STAR ...

  5. 12 Flutter仿京东商城项目 商品列表页面请求数据、封装Loading Widget、上拉分页加载更多

    ProductList.dart import 'package:flutter/material.dart'; import '../services/ScreenAdaper.dart'; imp ...

  6. 13 Flutter仿京东商城项目 商品列表筛选以及上拉分页加载更多

    ProductList.dart import 'package:flutter/material.dart'; import '../services/ScreenAdaper.dart'; imp ...

  7. Android Demo 下拉刷新+加载更多+滑动删除

    小伙伴们在逛淘宝或者是各种app上,都可以看到这样的功能,下拉刷新和加载更多以及滑动删除,刷新,指刷洗之后使之变新,比喻突破旧的而创造出新的,比如在手机上浏览新闻的时候,使用下拉刷新的功能,我们可以第 ...

  8. 微信小程序 - (下拉)加载更多数据

    注意和后端配合就行了,前端也只能把数据拼接起来! 无论是下拉加载还是加载更多,一样的道理! 注意首次加载传递参数 注意每次加载数据数 wxml <view class='table-rank'& ...

  9. Android-PullToRefresh上拉下拉刷新加载更多,以及gridview刷新功能的Library下载地址

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985,转载请说明出处. 首先大家应该都听说过此开源框架的强大之处,支持单列以及双列的 上拉加载以及下拉刷新功 ...

随机推荐

  1. Oracle利用数据泵迁移用户

    一.利用数据泵将数据导出 1.1.确定字符集: select * from v$nls_parameters; 或 select userenv('language') from dual; 1.2. ...

  2. VBS基础篇 - 变量

    VBScript只有一种数据类型 —— Variant,它是根据上下文来判断是数字还是字符串.因为Variant是VBScript中唯一的数据类型,所以它也是VBScript中所有函数的返回值的数据类 ...

  3. 2876: [Noi2012]骑行川藏 - BZOJ

    Description 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因 ...

  4. VMware虚拟机中Hadoop服务的端口无法访问的问题

    今天安装了一个hadoop集群,因为已经在单个虚拟机上安装成功,所以初期安装相对顺利. 初始环境如下:       通过Vmware Esxi服务器虚拟机出来四台机器,每台机器的网络配置如下:     ...

  5. C# memcache

    概述 memcache是一套开放源的分布式高速缓存系统.由服务端和客户端组成,以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端的连接和操作.memcache主要把数据对象缓存到内存中, ...

  6. 利用Multi-Probe LSH构建ANN高维索引

    感谢大神们的无私奉献精神........因此笔者要坚持开源,专注开源,开源就像在HPU的考试中不像其他人作弊一样,长远来看,会有巨大收获. 一.背景介绍 1.1 相似性搜索简介 高维相似性搜索在音频. ...

  7. Matlab与科学计算的基本运算

    各种允许的比较关系 >, >=, <, <=, ==,~=, find(), all(), any() 例:>> A=[1,2,3;4,5,6;7,8,0]A = ...

  8. C# 连接Oracle数据库

    最近项目要用Oracle数据库,之前没搞过,近2天遇到好多问题,现在总结一下,做个备份. 一.关于Oracle安装 1.服务器端 从Oracle官网下载文件,file1和file2,解压之后安装就行了 ...

  9. 修改npm包管理器的registry为淘宝镜像(npm.taobao.org)

    起因 安装了node,安装了npm之后,官方的源实在是 太慢了! 看了看淘宝的npm镜像, http://npm.taobao.org/  竟然说让我再下载一个cnpm,要不然就每次都得install ...

  10. Unity3d Detect NetState

    public static bool HasConnection() { System.Net.WebClient client; System.IO.Stream stream; try { usi ...