Android 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 = 0; i < 2; i++) {
                        data.add(i);
                }

                for (int i = 0; i < 12; i++) {
                        if (i % 2 == 0) {
                                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, "数据刷新完成!", 0).show();
                        }

                }, 3000);

        }

        @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, "加载更多数据!", 0).show();
                        }

                }, 3000);

        }

/**
*
* 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 2;
        }

        @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 == 0) {

                        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, 0).show();

                }

        };
}

ScrollView下载

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

原文链接:ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多,转发请注明来源!

备份下载地址:http://download.csdn.net/detail/jdsjlzx/9290193

时间: 2024-09-14 12:35:18

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

Android ListView下拉刷新上拉自动加载更多DEMO示例_Android

代码下载地址已经更新.因为代码很久没更新,已经很落伍了,建议大家使用RecyclerView实现. 参考项目: https://github.com/bingoogolapple/BGARefreshLayout-Android https://github.com/baoyongzhang/android-PullRefreshLayout 下拉刷新,Android中非常普遍的功能.为了方便便重写的ListView来实现下拉刷新,同时添加了上拉自动加载更多的功能.设计最初是参考开源中国的And

Android ListView下拉刷新上拉自动加载更多DEMO示例

代码下载地址已经更新.因为代码很久没更新,已经很落伍了,建议大家使用RecyclerView实现. 参考项目: https://github.com/bingoogolapple/BGARefreshLayout-Android https://github.com/baoyongzhang/android-PullRefreshLayout 下拉刷新,Android中非常普遍的功能.为了方便便重写的ListView来实现下拉刷新,同时添加了上拉自动加载更多的功能.设计最初是参考开源中国的And

ListView实现下拉刷新加载更多的实例代码(直接拿来用)_Android

ListView Api bixu 好好看看 mNewsAdapter.notifyDataSetChanged();//刷新ListView 自定义的RefreashListView package com.itguang.dell_pc.myapplication.view; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import and

ListView实现下拉刷新加载更多的实例代码(直接拿来用)

ListView Api bixu 好好看看 mNewsAdapter.notifyDataSetChanged();//刷新ListView 自定义的RefreashListView package com.itguang.dell_pc.myapplication.view; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import and

Android:下拉刷新+加载更多+滑动删除实例讲解_Android

         小伙伴们在逛淘宝或者是各种app上,都可以看到这样的功能,下拉刷新和加载更多以及滑动删除,刷新,指刷洗之后使之变新,比喻突破旧的而创造出新的,比如在手机上浏览新闻的时候,使用下拉刷新的功能,我们可以第一时间掌握最新消息,加载更多是什么nie,简单来说就是在网页上逛淘宝的时候,我们可以点击下一页来满足我们更多的需求,但是在手机端就不一样了,没有上下页,怎么办nie,方法总比困难多,细心的小伙伴可能会发现,在手机端中,有加载更多来满足我们的要求,其实加载更多也是分页的一种体现.小伙

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

       小伙伴们在逛淘宝或者是各种app上,都可以看到这样的功能,下拉刷新和加载更多以及滑动删除,刷新,指刷洗之后使之变新,比喻突破旧的而创造出新的,比如在手机上浏览新闻的时候,使用下拉刷新的功能,我们可以第一时间掌握最新消息,加载更多是什么nie,简单来说就是在网页上逛淘宝的时候,我们可以点击下一页来满足我们更多的需求,但是在手机端就不一样了,没有上下页,怎么办nie,方法总比困难多,细心的小伙伴可能会发现,在手机端中,有加载更多来满足我们的要求,其实加载更多也是分页的一种体现.小伙伴在

Android:下拉刷新+加载更多+滑动删除实例讲解

小伙伴们在逛淘宝或者是各种app上,都可以看到这样的功能,下拉刷新和加载更多以及滑动删除,刷新,指刷洗之后使之变新,比喻突破旧的而创造出新的,比如在手机上浏览新闻的时候,使用下拉刷新的功能,我们可以第一时间掌握最新消息,加载更多是什么nie,简单来说就是在网页上逛淘宝的时候,我们可以点击下一页来满足我们更多的需求,但是在手机端就不一样了,没有上下页,怎么办nie,方法总比困难多,细心的小伙伴可能会发现,在手机端中,有加载更多来满足我们的要求,其实加载更多也是分页的一种体现.小伙伴在使用手机版QQ

android scrollView判断停止(滑动到底部)并加载下一页

转自:http://blog.csdn.net/walker02/article/details/7331991  在网上看到一些网页在实现分页加载的时候,能够自动判断是否到达底部,然后自动加载下一页的内容,开始用的是ListView实现的,但是这个效果并不是很好,因为图片比较多出现了有些卡卡的现象,用了另外一种方式去实现了主要是为了对比一下速度的问题,找了很多最后发现可以使用ScrollView,查了很多ScrollView的文档但是没有多少能够使用到的的东西,可能也是水平有限吧,没有仔细的深

Android ScrollView 下嵌套 ListView 或 GridView出现问题解决办法

Android ScrollView 下嵌套 ListView 或 GridView出现问题解决办法 ScrollView 下嵌套 ListView 或 GridView 会发列表现数据只能显示一行.因为他们都是滚动结构,两个滚动条放到一起就会引起冲突. 解决此问题可以通过计算 ListView 高度或重写 ListView 的 onMeasure 方法来解决.下面介绍通过重写 onMeasure 方法来解决问题. 重写 onMeasure 方法如下: public class ScrollLi