由Chris Banes实现ActionBar-PulltoRefresh,库错误等

时间:2013-12-11 17:55:10

标签: java android eclipse listview github

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

Importing Android Listview refresh by pull, project-properties error

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

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

有没有人可以告诉我如何成功导入和使用此库?

3 个答案:

答案 0 :(得分:4)

我将在此处为未来的PullToRefresh用户写这篇文章。我使用IntelliJ IDEA而不是eclipse,所以请记住 Module Project 这个词是等价的。当您必须向Eclipse添加项目时,操作是在IDEA中添加模块

ActionBarSherlock的例子(从现在开始的ABS)。

你有什么

  1. 您有一个名为:MyProject的模块。这是您的主要Android模块。
  2. 您想在MyProject中将PullToRefresh添加到一些片段(例如)。
  3. 第一步:下载并复制。

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

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

    将库目录复制到项目根目录:/path/to/your/project/pulltorefresh 将相应的(ABS或Compat)额外复制到项目根目录......

    这是你到目前为止所得到的:

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

    第二步导入以下内容: 将这些模块(eclipse中的项目)导入项目/工作区。如果您了解IDE,这应该很简单,但作为快速参考:文件 - >导入模块 - >从上面找到pulltorefresh文件夹(以及后面的-abs或compat)并按照向导进行操作。如果你正在使用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
    4. 当然,android-support和actiobarsherlock都可以位于MyProject中并被其他库导出(并从那里取出),但那是项目管理101;)

      第4步整合! 这更容易,只需按照Quick Start Guide进行操作即可。 请记住:在旧版本的lib中,您 在Activity中拥有一个attacher,不再需要。阅读文档,它非常简单(并且通过这种方式更加灵活)。

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

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

      1. 请勿在{{1​​}}中导入-abs或-compat。只需导入extras
      2. 从您的项目中,参考pulltorefresh
      3. 坚持......进口怎么样?!

        获取正确的导入对于任何库都很重要,您必须注意并且不要盲目地让IDE为您执行(或者至少要仔细检查您要导入的内容)。你会惊讶地发现有多少“名字碰撞”。

        对于Action Bar Sherlock项目,进口应该是:

        pulltorefresh

        对于非sherlock 纯项目:

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

        你从哪里得到的?!?!?!?!

        查看samples,Luke。

        例如,here's for the stock version

        最后一步是获利......但我把它留给你;)

        如果你还有问题,如果你不问懒惰问题,这些家伙很友好。随意关注该项目并参与issues page at github

        祝你好运!

答案 1 :(得分:3)

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

  1. 您的项目必须引用PullToRefresh又名 PTR
  2. PTR必须引用SmoothProgressBar又名 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
  6. ,请记得将支持库添加到SPB

    假设你知道如何在eclipse中引用一个android库项目(如果没有,谷歌吧),这就是你需要做的。

    祝你好运! :)

答案 2 :(得分:1)

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

rahuljiresal创建了一个包含Chris Banes' Actionbar-PullToRefresh和引用的SmoothProgressBar一体化:https://github.com/rahuljiresal/ActionBar-PullToRefresh

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

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