底部进度条在网格视图中

4
我有一个GridView,第一次显示15个视图的网格。然后,在点击按钮时,我添加了另外5个网格视图。所以我的问题是:如何在这5个视图加载时在页面底部添加一个进度条?就像一个旋转加载器一样,这5个视图得到更新。
嗨,我有一个选项卡主机TabWidget用于选项卡和放置在FrameLayout中的GridView。现在,如果我想要一个进度条,那么我需要在FrameLayout之后包括这个LinearLayout还是在FrameLayout内部?
4个回答

1
在XML中,在您的GridView下面添加以下内容。
<LinearLayout
    android:id="@+id/linlaProgressBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >

    <ProgressBar
        style="@style/Spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="2dp" />
</LinearLayout>

在您的Activity中,当您正在加载数据(假设它是一个AsyncTask)时,在onPreExecute()中显示它:
@Override
protected void onPreExecute() {
    // SHOW THE BOTTOM PROGRESS BAR (SPINNER) WHILE LOADING MORE PHOTOS
    linlaProgressBar.setVisibility(View.VISIBLE);
}

onPostExecute()中,隐藏它:
@Override
protected void onPostExecute() {
    // SHOW THE BOTTOM PROGRESS BAR (SPINNER) WHILE LOADING MORE PHOTOS
    linlaProgressBar.setVisibility(View.GONE);
}

如果您没有使用AsyncTask,则在开始下载数据的方法中将可见性设置为View.VISIBLE,并在设置Adapter之后或之前将其设置为View.GONE

编辑:添加其他信息。

有几件事情。

  1. 您正在从互联网上下载数据,我建议您改用AsycnTask而不是使用传统的() Method
  2. 请查看我几天前在类似问题上的答案:https://dev59.com/2mrXa4cB1Zd3GeqPAIym#13265776

在那个答案中,您将找到一个完整的解决方案,它将适合您的确切需求。嗯,几乎完全如此。您可能需要进行一些修改并自己适应一些东西。但总体而言,它将回答您所有的问题。我在我的应用程序中使用它,它们像您说的那样运行,Google Play底部的loading文本。而且它真的很完整。:-)


非常感谢,它起作用了,但我需要的是这个LinearLayout必须附加到GridView上,就像他向上滚动时一样,它应该与加载符号连接,然后消失。 - user1340801
只要数据在加载中,它就会持续显示。一旦完成,View.GONE 将隐藏它。 - Siddharth Lele
我明白了,我需要将它附加到上面的GridView上,就像在Google Play中滚动GridView时,您会看到一个包含进度条的布局。 - user1340801
这是一个常规的方法,在执行URL后解析XML。我不是在为下一组5个数据调用不同的方法,而是调用相同的方法,只是URL不同。 - user1340801
嗨,我有一个选项卡宿主TabWidget用于选项卡和Framelayout内的GridView。现在,如果我想要ProgressBar,那么我应该将这个LinearLayout包含在Framelayout之后还是Framelayout内部? - user1340801
显示剩余4条评论

0
你需要创建自定义视图,然后将其填充并添加为GridView中的底部视图。
<RelativeLayout
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
>

<Button android:text="Load"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerInParent="true"
/>          

<ProgressBar 
       android:layout_width="25.0dip"
       android:layout_height="25.0dip"
       android:layout_centerInParent="true"
       android:visibility="gone"
/>

</RelativeLayout>

现在展开这个视图并在GridView底部显示进度条 当你点击按钮时,可以将其设置为底部,只需显示进度条即可


0
在GridView的xml中添加一个标签,并将其属性"alignParentRight = true"和"visibility = invisible"设置好。在你的Activity中,使用AsyncTask类,在它的preExecute方法中将ProgressBar的visibility设置为visible。

pb.setVisibility(View.VISIBLE);

在doInBackground方法中加载您的图像,最后在onPostExecute方法中使此进度条不可见。
pb.setVisibility(View.INVISIBLE);

在点击加载按钮时执行此异步任务类。

这是一个易于理解asyncTask的简单教程。

http://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/

或者可以使用线程代替异步任务。


在postExecute方法中设置适配器。进度条的可见性和不可见性需要使用异步任务或线程才能正常工作。你不能在单个线程中使其可见或不可见。 - Tahreem

0
只需在布局中添加一个ProgressBar,并在需要显示/隐藏它时将其可见性设置为VISIBLEGONE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接