对于ListView内部的ListView,一般用来展示少量的列表数据。
内部的ListView的高度看起来是一个固定值且无法滑动,这个就比较蛋疼了。、
提供两种解决方案,方案的核心都是重新设置内部ListView的高度。
1 通过定制组件,重新写一个控件,继承于ListView.
public class CustomisedListView extends ListView{
public CustomisedListView(Context context) {
super(context);
}
public CustomisedListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CustomisedListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
然后将这个组件作为外部ListView的Item的一部分或全部就可以了。
2 直接在代码中指定内部ListView的高度
这个也分为两种情况:
A 计算出内部ListView中的所有Item的高度
public static void reSetListViewHeight(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
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);
}
这样就可以重新设置ListView的高度了
B预估出内部ListView每个Item的高度,直接写死,但感觉不如上面的好,上面的也有要求,内部ListView的Item一定得是LinearLayout
分享到:
相关推荐
本例通过android中接口回调,实现listview内部控件的点击事件获取与处理。具体实现原理可查看我的博客:http://blog.csdn.net/u013318697/article/details/50615129
本篇文章将深入探讨如何在ListView的内部Item布局中添加并处理Checkbox控件。 首先,我们需要创建一个自定义的布局文件,用于定义ListView的每个Item。这个布局文件通常会包含一个TextView用于显示数据,以及一个...
listview 内部item点击事件, public interface Callback { public void click(View v); }
父ListView的Adapter负责加载每个条目,而每个条目内部又包含了一个子ListView,这个子ListView的Adapter则负责加载子列表的数据。 在布局文件中,父ListView的每个条目(item)需要包含一个子ListView。可以通过在...
本篇文章将详细讲解如何在Activity中响应ListView内部按钮的点击事件,主要涉及的知识点包括:接口回调、ListView的适配器(Adapter)机制以及事件处理。 首先,我们理解ListView的工作原理。ListView通过Adapter将...
以上就是关于ListView Item内部操作的基础知识,通过自定义Adapter和处理各种事件,我们可以实现丰富的用户交互。在实际开发中,还可以结合其他组件和设计模式,如SwipeRefreshLayout(下拉刷新)、LoadMore(加载更...
然而,当一个ListView内部需要嵌套另一个ListView时,就会出现一些挑战。标题"listView嵌套listViewDemo"指的是一个示例项目,旨在解决此类问题。描述中提到,这个Demo解决了子ListView无法完全显示所有内容的困境,...
- **创建内部ListView的Adapter**:同样,为内部ListView创建一个自定义Adapter,处理内部的数据。 ```java public class InnerAdapter extends BaseAdapter { // 数据集合 private List<InnerItem> ...
完美解决ListView内部嵌套GridView导致各种异常,无法点击的问题,包含遇到的问题可能有:1、gridview显示不全。无法占满。2、listView点击item点击事件无效 3、GridView点击事件无效。4、假如GridView每行显示3个。...
- `MyAdapter.java`:自定义的Adapter,包含对主ListView和子ListView的处理。 - `item_layout.xml`:主列表项的布局文件,可能包含一个子ListView。 - `sub_item_layout.xml`:子列表项的布局文件。 - `data`:可能...
1. **嵌套ListView**:在一个ListView的每个Item内部再放置一个ListView,这样可以形成树状结构,便于展示层次化的数据。这种设计需要处理好ListView之间的滑动冲突,确保用户可以流畅地滚动和操作每个级别的列表。 ...
这个问题主要体现在如何正确处理子项目(内部ListView)的高度计算和滚动同步。 标题“listView嵌入listView”所指的就是这种技术,即在一个ListView的每个项视图中包含另一个ListView,以实现更复杂的布局结构。...
实现方法是创建一个自定义的ListView适配器,该适配器需要同时处理ListView和GridView的数据绑定。在getView()方法中,为每个ListView条目创建一个GridView实例,并设置其适配器,这样每个ListView条目就能显示一个...
实现ListView拖动项涉及多个步骤,包括事件处理、数据绑定以及与UI交互的逻辑。 1. **开启拖放功能** 首先,我们需要启用ListView控件的拖放功能。在C#代码中,可以通过设置`AllowDrop`属性为`true`来实现: ```...
在嵌套ListView的情况下,我们不仅需要一个外部的ListView(父ListView),还需要为每个父ListView的项创建一个内部的ListView(子ListView)。 标题"ListView嵌套ListView的demo"所展示的就是如何实现这样的功能。...
每个内部ListView都需要有自己的Adapter来处理其数据。 2. **多选模式**: ListView默认单选,要实现多选,需要设置`android:listChoiceMode="multipleChoice"`属性或在代码中调用`setChoiceMode(ListView.CHOICE_...
外部Adapter的每个项都会包含一个内部ListView,因此,我们还需要为内部ListView提供单独的数据源。 1. 创建外部ListView的Adapter:这个Adapter需要包含内部ListView的布局,并通过View Holder模式来复用视图,...
此外,子`ListView`内部元素(如`Button`、`ImageButton`等)可能也会争夺焦点,从而进一步干扰父`ListView`的行为。 #### 解决方案 针对上述问题,可以通过以下两种方式解决: 1. **调整子ListView的焦点管理...