Android ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多
2016-01-18 17:31
639 查看
ScrollView 效果
ScrollView 说明
一个ScrollView 嵌套ListView 嵌套GridView的上拉加载更多,下拉刷新的demo。
主要是重写了GridView和LsitView中的onMeasure 方法。
写的比较简单,希望对初学者有帮助。
[java] view
plaincopy
/***
* 主要思路是
* 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
相关文章推荐
- 类似美团的多条件筛选弹出框简单实现
- 2.6 Android 代码的严格检查
- 解释 Android 调用系统相机,在onActivityResult中接收的data为null的原因
- Android Native一处反调试
- Uri.parse()调用
- android中与Adapter相关的控件----ViewFlipper
- android中自定义dialog中有editText,无法显示输入法对话框的解决办法
- Android控件之Chronometer
- java.io.IOException:Can't read [F:\..\android-support-v4.jar] (No such file or directory)
- Android自定义照相机实现(拍照、保存到SD卡,利用Bundle在Acitivity交换数据)
- Android - SurfaceView + MediaPlayer实现分段视频无缝播放
- Mac下配置Android NDK
- Android layer-list的使用
- Android圆形图片自定义控件
- Android&IOS学习路线图
- Android 元素属性
- Android 讲解:存储(2)
- Android Studio实现Service AIDL
- Android开发环境搭建
- Android魅族等手机下拉刷新有留白(下拉悬停)