2

我在我的应用程序中使用 AsyncTask 从 Internet 加载数据。这是我的类的 onPostExecute 方法,它扩展了 Async 类。

protected void onPostExecute(Article result) {
    super.onPostExecute(result);

    TextView txtTitle= (TextView) view.findViewById(R.id.title);
    txtTitle.setText(result.getTitle());

    TextView txtMain= (TextView) view.findViewById(R.id.main);
    txtMain.setText(result.getContent());
}

这是 PageAdapter 中用于实例化页面的重写方法。customlayout 是显示文章的布局。

public Object instantiateItem(View container, int position) {
    LayoutInflater inflater = (LayoutInflater) container.getContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View page= inflater.inflate(R.layout.customlayout , null);

    Worker aw = new Worker(page, container.getContext());
    aw.execute(links.get(position));

    ((ViewPager) container).addView(page,0);
    return page;
}

这是在每个页面中膨胀的页面布局。

<TextView
    android:id="@+id/title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
     />

<TextView
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20sp" />

我想要实现的是在数据加载之前显示进度信息。即使在加载时,我也应该能够在页面上滑动。如果有人能提供帮助,我将不胜感激。

另外,如何控制在后台加载的页面数量?

4

3 回答 3

2

如果你正在寻找一个旋转的进度条,你可以试试这个:

xml:

<FrameLayout android:id="@+id/progressContainer">
   <ProgressBar style="@android:style/Widget.ProgressBar.Large"
                    android:layout_gravity="center" />
</FrameLayout>

活动:

private View progressContainer;

@Override
public View onCreateView(...) {
    progressContainer = v.findeViewById(R.id.progressContainer);
    progressContainer.setVisibility(View.INVISIBLE);
}

因此,每当您需要显示进度时,只需将视图设置为可见。

如果您希望仍然能够与您的活动交互,您只需修改父 FrameLayout 的可点击性:

android:clickable="true" (or "false")

如果要交互,请将其设置为 false,设置为 true 以阻止!

于 2013-09-17T14:30:10.033 回答
0

我建议使用片段作为您的 viewPager 项目,并在片段内实现加载模式,即 - https://github.com/johnkil/Android-ProgressFragment

关于正在加载的页面数量,请参阅 - setOffscreenPageLimit

于 2013-09-17T14:28:43.417 回答
0

如果我没记错的话。您正在创建类似 youtube 视频的内​​容,获取背景帧并不断更新它。在你的情况下是书,在后台获取页面并保持更新。

首先,您需要的是片段,因为您无法销毁在您的活动上运行的AsyncTask 。

其次,AsyncTask publishProgressonProgressUpdate(Progress...)方法,它可以帮助您报告背景情况。可以看一下android提供的使用示例

http://developer.android.com/reference/android/os/AsyncTask.html

于 2013-09-17T14:44:05.207 回答