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,转载请说明出处. 首先大家应该都听说过此开源框架的强大之处,支持单列以及双列的 上拉加载以及下拉刷新功 ...
随机推荐
- MySQL不同库名相同表结构实现主从配置
数据库版本 5.6.16 在两个服务器上,存在不同名字的数据库,但是两个数据库中的所有表结构相同,实现主从复制. 主库服务器的数据库名为yoon,从库服务器的库名为hank 在从库的my.cnf配置文 ...
- 解决ASP.NET使用IIS架设网站时“服务器应用程序不可用”的方法
服务器应用程序不可用您试图在此 Web 服务器上访问的 Web 应用程序当前不可用.请点击 Web 浏览器中的“刷新”按钮重试您的请求. 管理员注意事项: 详述此特定请求失败原因的错误消息可在 Web ...
- 【mongodb】 需求
增删改查 增加: (表名,增加内容) 删除: (表名,数据id) 改: (表名 根据id获取数据 修改 增加 查 (表名,字段 ) 关联查询? 请主站提供一下 在使用的接口
- wrk 网站压力测试
下载安装 wrk [root@aikaiyuan ~]# git clone https://github.com/wg/wrk.gitInitialized empty Git repository ...
- Android存储机制之Preference
Preference提供了一种轻量级的数据存取方法,主要是数据比较少的配置信息.它以键值对的方式将数据保存在一个XML配置文件中. 使用Preference方式来存取数据,用到了SharedPrefe ...
- 日志文件切割服务logrotate配置及crontab定时任务的使用
1.下载logrotate 在Fedora和CentOS安装 yum install logrotate crontabs Debian和Ubuntu上 apt-get install logrota ...
- execute、executeUpdate、executeQuery三者的区别(及返回值)
1. ResultSet executeQuery(String sql); 执行SQL查询,并返回ResultSet 对象. 2.int executeUpdate(String sql); 可执行 ...
- 学习Linux第一天
1.简介: 记住这个名字:Linus Torvals 系统组成:Linux内核,Shell, 文件系统,实时程序 Tips:在系统启动过程中,使用Alt+F2组合键,可以查看Ubuntu启动的详细过程 ...
- 【读书笔记】Redis入门
1:Redis概览 Remote Dictionary Server 远程字典服务 Redis是基于内存的存储 在一台普通的笔记本上,Redis每秒的读取速度可以达到10万 内存读取数据,断电的时候数 ...
- sqlserver 行转列、列转行[转]
转自:http://www.cnblogs.com/luofuxian/archive/2012/02/23/2364328.html Sql Server 行转列.列转行 创建表: CREA ...