Android 自定义listview适配ScrollView 自动计算高度
2016-10-27 11:45
295 查看
public class MyListView extends LinearLayout { private BaseAdapter adapter; private MyOnItemClickListener onItemClickListener; boolean footerViewAttached = false; private View footerview; /** * 通知更新listview */ public void notifyChange() { int count = getChildCount(); if (footerViewAttached) { count--; } LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); for (int i = count; i < adapter.getCount(); i++) { final int index = i; final LinearLayout layout = new LinearLayout(getContext()); layout.setLayoutParams(params); layout.setOrientation(VERTICAL); View v = adapter.getView(i, null, null); v.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (onItemClickListener != null) { onItemClickListener.onItemClick(MyListView.this, layout, index, adapter.getItem(index)); } } }); ImageView imageView = new ImageView(getContext()); imageView.setLayoutParams(params); layout.addView(v); layout.addView(imageView); addView(layout, index); } } public MyListView(Context context) { super(context); initAttr(null); } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); initAttr(attrs); } public void initAttr(AttributeSet attrs) { setOrientation(VERTICAL); } /** * 初始化footerview * * @param footerView */ public void initFooterView(final View footerView) { this.footerview = footerView; } /** * 设置footerView监听事件 * * @param onClickListener */ public void setFooterViewListener(OnClickListener onClickListener) { this.footerview.setOnClickListener(onClickListener); } public BaseAdapter getAdapter() { return adapter; } /** * 设置adapter并模拟listview添加????数据 * * @param adpater */ public void setAdapter(BaseAdapter adpater) { this.adapter = adpater; removeAllViews(); if (footerViewAttached) addView(footerview); notifyChange(); } /** * 设置条目监听事件 * * @param onClickListener */ public void setOnItemClickListener(MyOnItemClickListener onClickListener) { this.onItemClickListener = onClickListener; } /** * 没有下一页了 */ public void noMorePages() { if (footerview != null && footerViewAttached) { removeView(footerview); footerViewAttached = false; } } /** * 可能还有下一?? */ public void mayHaveMorePages() { if (!footerViewAttached && footerview != null) { addView(footerview); footerViewAttached = true; } } public static interface MyOnItemClickListener { public void onItemClick(ViewGroup parent, View view, int position, Object o); } }
如果需要listview的分割线自己在item布局里直接弄好就可以了
listview的刷新要用
myListView.notifyChange();
而不是
adapter.notifyDataSetChanged();
item点击监听
myListView.setOnItemClickListener(new MyListView.MyOnItemClickListener() { @Override public void onItemClick(ViewGroup parent, View view, int position, Object o) { } });
基本功能还是和listview类似的
相关文章推荐
- android自动计算高度的listview 嵌套在ScrollView中使用
- Android开发(三十)——ScrollView中ListView的高度自动适应
- Android 自定义当ScrollView里面嵌套GridView计算高度并获得焦点
- android ScrollView 里嵌套listview listview 重新计算高度
- android解决listview与scrollview的冲突、自定义listview的高度以及上下拉刷新
- android scrollview 嵌套listview 或者listview嵌套listview 计算子view高度
- Android ScrollView中嵌套ListView,ListView根据内容自动调整高度
- Android 当ScrollView里面嵌套Listview时计算高度
- 计算并设置ListView的高度,防止嵌套ScrollView监听出现问题,(两种方法,一种自定义,一种测量)
- android 自定义ScrollView实现反弹效果(以及解决和ListView之间的冲突)
- Android自定义控件之自定义Text,令控件中的字根据控件高度自动调整大小-FenGKun
- Android自定义控件之自定义EditText,令控件中的字根据控件高度自动调整大小-FenGKun
- Android中ListView嵌套进ScrollView时高度很小的解决方案
- android 自定义ScrollView实现反弹效果(以及解决和ListView之间的冲突)
- Android ListView根据项数的大小自动改变高度
- android 自定义ScrollView实现反弹效果(以及解决和ListView之间的冲突)
- Android 自定义ScrollView ListView 体验各种纵向滑动的需求
- Android ListView 长度自适应item的内容 计算listview的高度
- Android开发之旅一计算ListView选中item的高度
- scrollview中嵌入listview动态计算listview的高度