ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多

ScrollView 效果

ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多
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
原文地址:https://www.cnblogs.com/zhujiabin/p/5803373.html