1

我有一个关于如何最好地为 ViewPager 中的每个页面加载数据的问题。

在为我的邮件应用程序应用 ViewPager 之前,由于我在查看邮件时只加载了一个页面,因此使用了一个后台线程 (LoadMailDetailThread) 来加载邮件数据并将其绑定到 ListView 以显示该特定页面的数据。在 LoadMailDetailThread 中,它执行以下任务 - 根据输入消息 ID 加载邮件。- 设置邮件阅读状态。- 解析邮件内容以将超链接添加到每个 url。- 解析邮件内容以添加到每个电话号码的链接。- 将其绑定到 ListView。等等

在使用 ViewPager 之前,这适用于许多应用程序版本。

现在我需要实现一个允许用户滑动更改邮件的功能。应用 ViewPager 后,我现在可以在任何给定时间加载最多三个页面。为了重用现有代码,每个页面都使用 LoadMailDetailThread 来加载邮件数据并将其绑定到该页面中的 ListView。但是在这个新设计中,如果页面不是可见页面,则不需要完成所有任务,例如设置邮件读取状态,解析邮件。因此,为了让 LoadMailDetailThread 区分我们当前是否正在加载可见页面,我有一个标志传递给它(1 表示可见,0 表示不可见)。因此,如果我们正在加载可见页面,我们将设置邮件读取状态并进行解析,否则我们将在 onPageSelected 中执行这些任务。

我不认为这是一个很好的设计,因为在 LoadMailDetailThread 中,我有很多 if 语句,例如 if(taskType == VISIBLE) { } else if (taskType == NONVISIBLE) { }

到处都是。

我的问题是,有没有推荐的方法或模式来解决这类问题?为可见和不可见类编写单独的类?或者修改 LoadMailDetailThread 只做一般任务(加载邮件),让 onPageSelected 做细节(设置邮件读取状态,解析内容)?

谢谢

4

0 回答 0