如何在ListView中嵌套ListView
2个回答
展开全部
在item的布局中可以再添加ListView
但是由于两个滚动有冲突,所以让item里的listview计算定高,让外层的可以滚动就可以实现真正的嵌套了。
计算定高
public class Utility {
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
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);
}
}
展开全部
如果你是想实现类似QQ微信的好友分组的话,那麻烦你用ExpandableList
这个并不是ListView里嵌套ListView
如果你非要嵌套,也不是不行,子ListView必须要设置它的高度,即要展开所有item,否则滑动不了的
展开所有item的ListView,我这有现成的,在xml里用这个去声明吧
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
/**
* 自定义ListView 控件
* @author Administrator
*
*/
public class MyListView extends ListView {
public MyListView(Context context) {
super(context);
}
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
这个并不是ListView里嵌套ListView
如果你非要嵌套,也不是不行,子ListView必须要设置它的高度,即要展开所有item,否则滑动不了的
展开所有item的ListView,我这有现成的,在xml里用这个去声明吧
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;
/**
* 自定义ListView 控件
* @author Administrator
*
*/
public class MyListView extends ListView {
public MyListView(Context context) {
super(context);
}
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询