【问题标题】:Implementing ActionBar-PulltoRefresh by Chris Banes, library errors etc由 Chris Banes 实现 ActionBar-PulltoRefresh,库错误等
【发布时间】:2013-12-11 17:55:10
【问题描述】:

跟进我之前关于在我的项目中从 github 导入某个库的问题,我决定要实现一个不同的库,但此时我遇到了很多错误。

Importing Android Listview refresh by pull, project-properties error

与目前使用 Chris Banes 的 ActionBar-PullToRefresh 的 Google 一致:https://github.com/chrisbanes/ActionBar-PullToRefresh, 我决定我也想将该库用于我目前正在为我的实习开发的 Android 应用程序。但是,当我尝试将现有代码从解压缩的 zip 文件导入工作区时,我立即在库以及示例活动中遇到大量错误。例如,在库文件夹中的 ActionBarPullToRefresh.java 中,它在第一个私有 hashmap 中的 Class 下划线,并说明对泛型 Class 的引用应该被参数化。

IDE (eclipse) 也会给包含的其他文件夹带来大量错误,当我使用属性 -> android 选项卡将库文件夹添加到我的主项目的库时,它会将错误转移到该项目(非常合乎逻辑)。

谁能指导我如何成功导入和使用这个库?

【问题讨论】:

  • 你使用 ActionBar Sherlock 还是 ActionBarCompat?
  • 嘿马丁,我不打算实现这些,因为应用程序只需要支持 Android 4.0 及更高版本。如果我是正确的,则在这种情况下不必使用这两个

标签: java android eclipse listview github


【解决方案1】:

我会在这里为以后的 PullToRefresh 用户写这个。我使用IntelliJ IDEA 而不是eclipse,所以请记住ModuleProject 这两个词是等价的。当您必须向 Eclipse 添加项目时,操作是 IDEA 中的添加模块

ActionBarSherlock 为例(从现在开始为 ABS)。

你有什么

  1. 您有一个名为:MyProject 的模块。这是您的主要 Android 模块。
  2. 您想将 PullToRefresh 添加到 MyProject 中的一些片段(例如)。

第一步:下载并复制。

我个人喜欢克隆或复刻用于读取提交和更改日志的库。您不仅可以通过查看其他人的代码来学习,还可以获得有关您使用的库的“最新消息”。这是一个双赢的局面。记住 Jeff Atwood 说过的话:“Read The Source, Luke”。所以为了做到这一点,从the right URL克隆ActionBar-PullToRefresh。

现在我不喜欢用我的模块/项目进行克隆,所以我通常在其他地方克隆项目,然后手动移动我需要的东西。这很乏味,但这样我只能得到我想要的。那你需要什么?克隆包含两个重要目录:ExtrasLibrary。我们将需要这些东西。

将库目录复制到您的项目根目录:/path/to/your/project/pulltorefresh 将相应的(ABS 或 Compat)extra 也复制到您的项目根目录中……

这是你目前得到的:

/path/to/your/project/MyProject
/path/to/your/project/pulltorefresh
/path/to/your/project/pulltorefresh-abs (or compat)

第二步导入这些: 将这些模块(eclipse 中的项目)导入项目/工作区。如果您了解 IDE,这应该很简单,但作为快速参考:文件 -> 导入模块 -> 从上面找到 pulltorefresh 文件夹(以及稍后的 -abs 或兼容)并按照向导进行操作。如果您使用的是 Eclipse,请check this link to know how to do it

现在您的左侧面板 (⌘1) 中应该有以下结构

MyProject
pulltorefresh
pulltorefresh-abs

第 3 步添加正确的引用

假设MyProjectactiobnarsherlock.jar(因为你需要它)或compat 对应的android 支持库,并且你也有对应的android-support-v13(或v4)......

  1. pulltorefresh 不需要任何库引用。
  2. pulltorefresh-abs 需要参考:pulltorefreshandroid-suppport-vXactiobbarsherlock
  3. MyProject 需要参考:pulltorefresh-absandroid-suport-vXactiobbarsherlock

当然,android-support 和 actiobarsherlock 都可以放在 MyProject 中并由其他库导出(并从那里获取),但那是项目管理 101 ;)

第 4 步整合! 这更容易,只需关注Quick Start Guide记住:在旧版本的 lib 中,您必须在 Activity 中拥有附加程序,这不再是必需的。阅读文档,它非常简单(而且这种方式更加灵活)。

等等,如果你不使用 Sherlock 或 Compat 怎么办?

我还没有这样做,但我的猜测是:

  1. 不要在extras 中导入-abs 或-compat。只需导入pulltorefresh
  2. 在您的项目中,引用 pulltorefresh

等等……进口呢?!

获取正确的导入对于任何库都很重要,您必须注意,不要盲目地让 IDE 为您执行此操作(或至少始终仔细检查您正在导入的内容)。您会惊讶地发现有多少“名称冲突”。

对于基于 Action Bar Sherlock 的项目,导入应该是:

import uk.co.senab.actionbarpulltorefresh.extras.actionbarsherlock.PullToRefreshLayout;
import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;

对于一个非sherlock纯项目:

import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;
import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout;

你从哪里弄来的?!?!?!?!

通过查看samples,卢克。

例如,here's for the stock version

最后一步是盈利……但我把它留给你;)

如果您仍然有问题,只要您不问懒惰的问题,他们就会很友好。随时关注该项目并参与issues page at github

祝你好运!

【讨论】:

  • 非常感谢您的详细回复。我会尽快尝试一下,如果我成功了会通知你
  • 对不起,如果这是一个非常明显的问题,但我想知道它是否仍然正常,在创建了 pulltorefresh (最初是库类)的引用并且它已包含在构建路径中之后,仍然有ActionBarPulltoRefresh.java 顶部的私有 hashmap 出现错误。我不确定我的错误来自哪里,但图书馆在我的 Eclipse 中充满了它们
  • 你用的是什么版本? (图书馆)我正在使用 0.9.2(我知道有 0.93 但尚未升级。错误的确切行是什么?
  • private HashMap<Class, ViewDelegate> mViewDelegates; ?
  • 它说:“类是原始类型。对泛型类的引用应该被参数化”
【解决方案2】:

我自己不使用 Gradle,但我们都应该使用,因为它是 Java (JVM) 世界中构建技术的一次飞跃(来自 Gradle introduction)。这是引用 PTR v 0.9.3 的项目库的方法:

  1. 您的项目必须引用 PullToRefresh aka PTR
  2. PTR 必须引用 SmoothProgressBar aka SPB,你可以找到 here, on github
  3. PTR 和 SPB 都应该是 Android 库,因此请确保选中复选框(属性 -> Android -> IsLibrary)
  4. “棘手”部分:在本地计算机上克隆 SPB 后,将 SmoothProgressBar\library\src\main\java 的内容复制到 SmoothProgressBar\library\src\main\src(这是 ADT 期望的结构)
  5. 如果您的目标低于 14,请记住将支持库添加到 SPB

假设您知道如何在 Eclipse 中引用一个 android 库项目(如果没有,请用 google 搜索),这就是您需要做的所有事情。

祝你好运! :)

【讨论】:

  • 感谢您的回答。幸运的是,我能够通过 Github 上项目页面上的讨论解决我的问题。我忘记将马丁的评论标记为已回答,抱歉。
  • 这是很好的信息,因为 PTR 0.9.3> 使用 SmoothProgressBar(而我使用的版本 0.9.2 没有)。所以你必须记住这一点:)
【解决方案3】:

非高级开发人员/git 用户可能会发现以下链接很有用(就像我一样)http://www.rahuljiresal.com/2014/04/actionbar-pull-to-refresh-on-android/

rahuljiresal 创建了一个 git 项目,其中包含 Chris Banes 的 Actionbar-PullToRefresh 和引用的 SmoothProgressBar 合二为一:https://github.com/rahuljiresal/ActionBar-PullToRefresh

Martin 描述的上述步骤,即
1. 下载/克隆 git 项目到本地
2. 将 PTR 库导入 Eclipse
3. 从您的项目中引用 PTR 库
4. 整合

仍然有效,但整个过程非常简单且即插即用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多