android scrollview中嵌套expandablelistview

一、重新expandablelistview

public class CustomExpandableListView extends ExpandableListView {public CustomExpandableListView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// TODO Auto-generated method stubint expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expandSpec);}}二、动态计算expandablelistview的高度,,xxx_group.xml和xxx_child.xml的最外层要用linearlayout,反正relativelayout不行,不知道为什么

private void setListViewHeight(ExpandableListView listView) {ListAdapter listAdapter = listView.getAdapter();int totalHeight = 0;int count = listAdapter.getCount();for (int i = 0; i < listAdapter.getCount(); i++) {View listItem = listAdapter.getView(i, null, listView);listItem.measure(0, 0);totalHeight += listItem.getMeasuredHeight();}ViewGroup.LayoutParams params = listView.getLayoutParams();params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() – 1));listView.setLayoutParams(params);listView.requestLayout();}三、scrollveiew中嵌套的listview的话,前两种都行,还有一种如下

public class ViewGroupForListView extends LinearLayout implements View.OnClickListener {private ListAdapter mAdapter = null;private OnItemClickListener mListener = null;public ViewGroupForListView(Context context) {super(context);}public ViewGroupForListView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stubthis.setOrientation(VERTICAL);}/** * 绑定数据 */protected void bindData() {int count = mAdapter.getCount();for(int i = 0; i < count; i++) {View v = mAdapter.getView(i, null, null);v.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));v.setOnClickListener(this);v.setId(i);addView(v, i);}}/** * 设置adapter * @param adapter */public void setAdapter(ListAdapter adapter) {mAdapter = adapter;if(this.getChildCount() != 0) {removeAllViews();}bindData();}/** * 获取adapter * @return */public ListAdapter getAdapter() {return mAdapter;}/** * 绑定监听 * @param listener */public void setOnItemClickListener(OnItemClickListener listener) {this.mListener = listener;}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(mListener != null) {mListener.onItemClick(v.getId(), mAdapter);}}/** * 监听接口 * @author Visual * */public interface OnItemClickListener {public void onItemClick(int position, ListAdapter adapter);}adapter的实现类似普通listview的adapter用法

如果困难是地上的荆棘,我们脱掉鞋子,光着脚笑笑,

android scrollview中嵌套expandablelistview

相关文章:

你感兴趣的文章:

标签云: