问题描述
- Android开发ListView嵌套GridView,如何更加优化
-
我在ListView中嵌套GridView,效果实现了,但我在ListView的getView()中是
new GridViewAdapter(``````),也就是说我每一个大的ListView的Item都有去new
一个GridView的适配器,这样对内存不好。可我想通过notifyDataSetChanged()来
改变嵌套的GridView中的数据,一直实现不了。。。求高手解答···
解决方案
用viewhoder,重用converview,holder中可以保存adapter等信息,不要每次都new
解决方案二:
重写ListView、gridView(推荐):
public class MyListView extends ListView {
public MyListView(Context context) {
// TODO Auto-generated method stub
super(context);
}
public MyListView(Context context, AttributeSet attrs) {
// TODO Auto-generated method stub
super(context, attrs);
}
public MyListView(Context context, AttributeSet attrs, int defStyle) {
// TODO Auto-generated method stub
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
/**
- 自定义gridview,解决ListView中嵌套gridview显示不正常的问题(1行半)
- @author wangyx
- @version 1.0.0 2012-9-14
*/public class MyGridView extends GridView{
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyGridView(Context context) { super(context); } public MyGridView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); }
}
解决方案三:
这样实现的效果就是一个横向的listview,你找找HorizontalListView,或者试试 gallery能不能实现你要的效果
时间: 2024-10-30 19:51:25