ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多
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下载
ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多的更多相关文章
- Android UI--自定义ListView(实现下拉刷新+加载更多)
Android UI--自定义ListView(实现下拉刷新+加载更多) 关于实现ListView下拉刷新和加载更多的实现,我想网上一搜就一堆.不过我就没发现比较实用的,要不就是实现起来太复杂,要不就 ...
- ListView下拉刷新,上拉自动加载更多
下拉刷新,Android中非常普遍的功能.为了方便便重写的ListView来实现下拉刷新,同时添加了上拉自动加载更多的功能.设计最初是参考开源中国的Android客户端源码.先看示例图. ...
- scroll-view组件实现下拉刷新, 拉到底加载更多
官方文档已声明,即使在page.json和app.json中开启下拉刷新,scroll-view组件也是不支持的.但我们可以通过曲线救国的方法来实现 实现代码 // wxml <scroll-v ...
- PullToRefresh下拉刷新 加载更多 详解 +示例
常用设置 项目地址:https://github.com/chrisbanes/Android-PullToRefresh a. 设置刷新模式 如果Mode设置成Mode.PULL_FROM_STAR ...
- 12 Flutter仿京东商城项目 商品列表页面请求数据、封装Loading Widget、上拉分页加载更多
ProductList.dart import 'package:flutter/material.dart'; import '../services/ScreenAdaper.dart'; imp ...
- 13 Flutter仿京东商城项目 商品列表筛选以及上拉分页加载更多
ProductList.dart import 'package:flutter/material.dart'; import '../services/ScreenAdaper.dart'; imp ...
- Android Demo 下拉刷新+加载更多+滑动删除
小伙伴们在逛淘宝或者是各种app上,都可以看到这样的功能,下拉刷新和加载更多以及滑动删除,刷新,指刷洗之后使之变新,比喻突破旧的而创造出新的,比如在手机上浏览新闻的时候,使用下拉刷新的功能,我们可以第 ...
- 微信小程序 - (下拉)加载更多数据
注意和后端配合就行了,前端也只能把数据拼接起来! 无论是下拉加载还是加载更多,一样的道理! 注意首次加载传递参数 注意每次加载数据数 wxml <view class='table-rank'& ...
- Android-PullToRefresh上拉下拉刷新加载更多,以及gridview刷新功能的Library下载地址
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985,转载请说明出处. 首先大家应该都听说过此开源框架的强大之处,支持单列以及双列的 上拉加载以及下拉刷新功 ...
随机推荐
- 内部技术分享的 PPT
本文的基础是搞了一次内部的技术分享,在此也分享一下本次的PPT的一些内容.先列一下大概内容吧. EF-Code First API(WCF.WebAPI) Xaml MVVM AOP Xamarin. ...
- Spark Standalone运行过程
以下内容参考http://www.cnblogs.com/luogankun/p/3912956.html 一.集群启动过程--启动Master 二.集群启动过程--启动WorkerWorker运行时 ...
- Android开发——AsyncTask详解
android提供AsynvTask,目的是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的. Android为了降低开发难度,提供了AsyncTask.Asyn ...
- Newtonsoft.Json同时对多个时间字段以不同的格式序列化
在博客园潜水多年,学到很多,也进步了很多,在这里说声谢谢,是时候给园友分享一点自己的东西,希望和大家一起进步. 之前有个需求要对一张表的多个时间字段进行不同的格式序列化, 在网上没找到相对较好的解决方 ...
- iOS 进阶 第九天(0408)
0408 makekeyAndVisible解释 一个程序可以有多个Window,但只有一个窗口能够成为主窗口.如图中所示,此时的window2是主窗口.主窗口用处大了.从iOS7开始无论是主窗口还是 ...
- Ha ha lou!
忙了一个晚上,终于稍微把这个模板修缮好了一点=-=//,然而我并不知道怎么像别的大牛一样,博客跟自己做的页面一样.总之今天就先到这里啦! 我的QQ是270115270,不知道会不会有人来呢=-=. ( ...
- .NET开源项目介绍及资源推荐:数据持久层
在.NET平台下,关于数据持久层框架非常多,本文主要对如下几种做简要的介绍并推荐一些学习的资源: 1.NHibernate 2.NBear 3.Castle ActiveRecord 4.iBATIS ...
- 实现 iframe 子页面调用父页面中的js方法
父页面:index.html(使用iframe包含子页面child.html) [xhtml] view plaincopyprint? <html> <head> <s ...
- pure.css
注释中address是纠正的意思 等价于correct/*! Pure v0.5.0 Copyright 2014 Yahoo! Inc. All rights reserved. Licensed ...
- 【POJ】【2068】Nim
博弈论/DP 这是Nim?这不是巴什博奕的变形吗…… 我也不会捉啊,不过一看最多只有20个人,每人最多拿16个石子,总共只有8196-1个石子,范围好像挺小的,嗯目测暴力可做. so,记忆化搜索直接水 ...