首页 > 代码库 > !!!!!安卓界面总是显示加载进度条的问题,没事别乱用ListFragment

!!!!!安卓界面总是显示加载进度条的问题,没事别乱用ListFragment

最近的安卓应用快完工了,但是个别界面有瑕疵,怎么修改都解决不了,挥之不去的阴影。问题如下:

在界面上,数据已经加载完毕了,可还是有一股圆形的进度条,感觉它老是在加载什么东西,严重影响界面美观:

1. 布局用的是LinearLayout


2.界面布局用的是RelativeLayout



各种方法都试过了,当然都是基于布局文件的修改,什么fill_parent啦,alignBotton啦,换不同的layout啦,各种属性试了个遍,都不行,为了这个布局问题整整折腾了三天。

反正,在布局文件上再怎么折腾可能都没戏了。

静下心来想想,问题会不会出在其他地方,而不是布局文件?

回想起刚学Android那几天,照着书上的例子写,其中有提到ListView的部分,也提到了圆形的进度条,于是翻开书本,找到那个章节,忽然就柳暗花明了!



注意看照片中划线的文字:“当ListView没有内容可以显示时... ... 显示一个圆形进度条”,好吧,难道是问题出在应用的ListView?

那就来看看这个界面中的ListView是怎么回事:

<?xml version="1.0" encoding="utf-8"?> 

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">
<LinearLayout
    android:id="@+id/fragmentContainer"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" >
    
    <LinearLayout> 
   	<--表头,忽略-->
    </LinearLayout> 
   
    <ListView 
        android:id="@+id/list_uploadinfo_1" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:dividerHeight="1px"
        android:divider="#B8B8B8" > 
    </ListView> 
   
    	<Button android:text="各站点上传数量图"/>

    <LinearLayout> 
   	<--表头,忽略-->
    </LinearLayout>
    
    <ListView 
        android:id="@+id/list_uploadinfo_2" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:dividerHeight="1px"
      
        android:divider="#B8B8B8" > 
    </ListView> 
    
    <Button android:text="每月上传数趋势图表"/>
    
</LinearLayout>
</ScrollView>


结构上,有两个ListView,但他们都已经用数据填满了,不存在没有内容的问题。

那难道还有其他的ListView? 答案还真就是有其他的ListView,而且,是那个最大的ListView,却被我忽略了:

public class UploadInfoFragment extends ListFragment { //注意,是继承了ListFragment
	private HashMap<String, Integer> monthQuantityMap;
	private HashMap<String, Integer> stationQuantityMap;
	...}

就是控制这个界面的Fragment,它继承了ListFragment,也就需要自己的ListView来展示内容,但是只有刚才的两个内部ListView填充了内容,外面这个大的没有,所以才会有这个挥之不去的圆形进度条!!!

那怎么办?很简单,既然并不需要往这个最大的ListView中填充数据,那何必要用ListFragment 呢?完全可以用普通的Fragment嘛。

其实,之所以这里用的是ListFragment,完全是因为在做这个功能的时候,大部分代码都是从其他功能搬过来的,所以把ListFragment也搬了过来。尴尬

然后进行修改,让这个类继承普通的 Fragment 即可:

public class UploadInfoFragment extends Fragment { //注意,用普通的Fragment即可
	private HashMap<String, Integer> monthQuantityMap;
	private HashMap<String, Integer> stationQuantityMap;
	...}
终于把讨厌的圆形进度条赶走了,问题解决!




总结:有些常见的问题,网上随便一查就有,但这些藏的比较深的问题,一般很难在网上直接查到,这个时候如果能仔细地取翻一翻书本,或许会有惊喜的发现~

另外,平时在看书的时候还是认真一点为好,这样,有些细节就能印在脑子里,说不定什么时候就派上用场了~


!!!!!安卓界面总是显示加载进度条的问题,没事别乱用ListFragment