listView中只显示一行的问题处理

来源:互联网 发布:井柏然手写字体软件 编辑:程序博客网 时间:2024/06/04 19:33
在做搜索当前wifi,搜索完后,显示在listView中时,出现只显示了第一个,其他的不显示的问题。布局如下
<ScrollView            android:id="@+id/layer1_linear2"            android:layout_width="fill_parent"            android:layout_height="0dp"             android:layout_weight="10">        <LinearLayout            android:id="@+id/layer2_linear1"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:orientation="horizontal">            <ListView android:id="@+id/listView1"                 android:layout_width="fill_parent"                 android:layout_height="fill_parent">            </ListView>        </LinearLayout>    </ScrollView>`
解决方法:
/**      * 为了解决ListView在ScrollView中只能显示一行数据的问题      *       * @param listView      */      public static void setListViewHeightBasedOnChildren(ListView listView) {          // 获取ListView对应的Adapter          ListAdapter listAdapter = listView.getAdapter();          if (listAdapter == null) {              return;          }          int totalHeight = 0;          for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目              View listItem = listAdapter.getView(i, null, listView);              listItem.measure(0, 0); // 计算子项View 的宽高              totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度          }          ViewGroup.LayoutParams params = listView.getLayoutParams();          params.height = totalHeight                  + (listView.getDividerHeight() * (listAdapter.getCount() - 1));          // listView.getDividerHeight()获取子项间分隔符占用的高度          // params.height最后得到整个ListView完整显示需要的高度          listView.setLayoutParams(params);      }  

在fragment中或Activity中

BaseAdapter adapter = new   SampleCursorAdapter(getActivity(), (SampleCursor)cursor);  lv.setAdapter(adapter);   Utils.setListViewHeightBasedOnChildren(lv);  

参考: http://blog.csdn.net/zhouyingge1104/article/details/43818937

阅读全文
0 0
原创粉丝点击