`
tianxiaozz
  • 浏览: 24866 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ListView内部的ListView的处理

阅读更多

对于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内部控件的点击事件

    本例通过android中接口回调,实现listview内部控件的点击事件获取与处理。具体实现原理可查看我的博客:http://blog.csdn.net/u013318697/article/details/50615129

    android 的listview 内部item的布局包含checkbox控件

    本篇文章将深入探讨如何在ListView的内部Item布局中添加并处理Checkbox控件。 首先,我们需要创建一个自定义的布局文件,用于定义ListView的每个Item。这个布局文件通常会包含一个TextView用于显示数据,以及一个...

    listview 内部item点击事件

    listview 内部item点击事件, public interface Callback { public void click(View v); }

    android的listview嵌套listview,列表嵌套列表 android studio版本

    父ListView的Adapter负责加载每个条目,而每个条目内部又包含了一个子ListView,这个子ListView的Adapter则负责加载子列表的数据。 在布局文件中,父ListView的每个条目(item)需要包含一个子ListView。可以通过在...

    在Activity中响应ListView内部按钮的点击事件

    本篇文章将详细讲解如何在Activity中响应ListView内部按钮的点击事件,主要涉及的知识点包括:接口回调、ListView的适配器(Adapter)机制以及事件处理。 首先,我们理解ListView的工作原理。ListView通过Adapter将...

    ListView Item内部操作

    以上就是关于ListView Item内部操作的基础知识,通过自定义Adapter和处理各种事件,我们可以实现丰富的用户交互。在实际开发中,还可以结合其他组件和设计模式,如SwipeRefreshLayout(下拉刷新)、LoadMore(加载更...

    listView嵌套listViewDemo

    然而,当一个ListView内部需要嵌套另一个ListView时,就会出现一些挑战。标题"listView嵌套listViewDemo"指的是一个示例项目,旨在解决此类问题。描述中提到,这个Demo解决了子ListView无法完全显示所有内容的困境,...

    Android listview嵌套listview

    - **创建内部ListView的Adapter**:同样,为内部ListView创建一个自定义Adapter,处理内部的数据。 ```java public class InnerAdapter extends BaseAdapter { // 数据集合 private List&lt;InnerItem&gt; ...

    完美解决ListView内部嵌套GridView导致各种异常,无法点击的问题

    完美解决ListView内部嵌套GridView导致各种异常,无法点击的问题,包含遇到的问题可能有:1、gridview显示不全。无法占满。2、listView点击item点击事件无效 3、GridView点击事件无效。4、假如GridView每行显示3个。...

    listView 嵌套 ListView demo

    - `MyAdapter.java`:自定义的Adapter,包含对主ListView和子ListView的处理。 - `item_layout.xml`:主列表项的布局文件,可能包含一个子ListView。 - `sub_item_layout.xml`:子列表项的布局文件。 - `data`:可能...

    ListView嵌套ListView全选,多选

    1. **嵌套ListView**:在一个ListView的每个Item内部再放置一个ListView,这样可以形成树状结构,便于展示层次化的数据。这种设计需要处理好ListView之间的滑动冲突,确保用户可以流畅地滚动和操作每个级别的列表。 ...

    listView嵌入listView

    这个问题主要体现在如何正确处理子项目(内部ListView)的高度计算和滚动同步。 标题“listView嵌入listView”所指的就是这种技术,即在一个ListView的每个项视图中包含另一个ListView,以实现更复杂的布局结构。...

    ListView嵌套GridView以及ListVIew嵌套ListVIew

    实现方法是创建一个自定义的ListView适配器,该适配器需要同时处理ListView和GridView的数据绑定。在getView()方法中,为每个ListView条目创建一个GridView实例,并设置其适配器,这样每个ListView条目就能显示一个...

    实现ListView拖动

    实现ListView拖动项涉及多个步骤,包括事件处理、数据绑定以及与UI交互的逻辑。 1. **开启拖放功能** 首先,我们需要启用ListView控件的拖放功能。在C#代码中,可以通过设置`AllowDrop`属性为`true`来实现: ```...

    ListView嵌套ListView的demo

    在嵌套ListView的情况下,我们不仅需要一个外部的ListView(父ListView),还需要为每个父ListView的项创建一个内部的ListView(子ListView)。 标题"ListView嵌套ListView的demo"所展示的就是如何实现这样的功能。...

    ListView嵌套ListView带多选,全选,反选,选中数量

    每个内部ListView都需要有自己的Adapter来处理其数据。 2. **多选模式**: ListView默认单选,要实现多选,需要设置`android:listChoiceMode="multipleChoice"`属性或在代码中调用`setChoiceMode(ListView.CHOICE_...

    嵌套listView

    外部Adapter的每个项都会包含一个内部ListView,因此,我们还需要为内部ListView提供单独的数据源。 1. 创建外部ListView的Adapter:这个Adapter需要包含内部ListView的布局,并通过View Holder模式来复用视图,...

    listView上增加button点击事件

    在这里,`ViewHolder`是一个内部类,用于存储视图组件的引用,以减少查找视图的时间。`getView()`方法中的`setOnClickListener()`为Button设置了点击事件。 然后,对于ListView的点击事件,我们通常会在Activity或...

Global site tag (gtag.js) - Google Analytics