使用ListView Fragment& Android进行Android Pull-to-Refresh自定义ListView适配器

时间:2014-03-20 19:20:17

标签: android listview android-fragments android-listfragment pull-to-refresh

我使用Android Studio启动选项构建了我的项目(使用选项卡自动构建action bar),因此为我生成了一些内容。但是,我为使用自定义list-view fragment的每个标签实现了adapters

我在添加Chris Bane的pull-to-refresh lib时遇到了麻烦。也许我输错了?我在Android开发方面相当新,特别是这个新的Gradle东西。

我在build.gradle文件中导入github存储库:

apply plugin: 'android'

android {
compileSdkVersion 19
buildToolsVersion "19.0.1"

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 19
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
  }
}
dependencies {
   compile 'com.android.support:support-v4:19.0.1'
   compile 'com.android.support:appcompat-v7:19.0.1'
   compile 'com.github.chrisbanes.actionbarpulltorefresh:extra-abc:+'
 } 

一切减去minSDKVersion&我的项目创建时,预生成了依赖项中的最后一次编译。这个build.gradle文件是我的`/ app文件夹中的文件。

Gradle将正常同步,我将在项目根目录的.idea文件夹中看到操作栏git中的文件。

这是我感到困惑的地方:

在github repo“快速启动”中它说

  

您需要做的第一件事是将可刷新的视图包装在PullToRefreshLayout中:

使用代码示例执行以下操作:

<uk.co.senab.actionbarpulltorefresh.extras.actionbarcompat.PullToRefreshLayout>
<listview/>
</uk.co.senab.actionbarpulltorefresh.extras.actionbarcompat.PullToRefreshLayout>

假设uk.co.senab.actionbarpulltorefresh.extras是我的项目名称,那么com.lucaapp.app

这是我的ListFragment的XML,你会看到我的困惑:

<?xml version="1.0" encoding="utf-8"?>

<com.lucaapp.app.PullToRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/ptr_layout" >


<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="#b5b5b5"
    android:dividerHeight="1dp"
    android:listSelector="@drawable/list_selector" />


<TextView
    android:id="@android:id/empty"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="No Events" />

</com.lucaapp.app.PullToRefreshLayout>

在我尝试从我的fragment类中的quick start guide实现代码之前,这不会立即给我任何错误。尝试导入github repo方法时出现Cannot Resolve Symbol错误。

我尝试了以下操作,导致红色导致cannot resolve symbol错误:

import com.lucapp.app.PullToRefreshAttacher;
import com.lucapp.app.PullToRefreshLayout;
import uk.co.senab.actionbarpulltorefresh.extras.actionbarcompat.PullToRefreshAttacher;

2 个答案:

答案 0 :(得分:1)

现在android已经引入了一个名为Swipe的新简单功能来刷新布局。请参阅网站devloper sitesimple example

答案 1 :(得分:0)

您是否尝试过Chris Banes的本教程: https://github.com/chrisbanes/ActionBar-PullToRefresh/wiki/QuickStart-ABS

本教程包含所有步骤,从build.gradle开始并使用代码片段完成。

唯一的区别是:教程适用于ScrollView(不是ListView,如你所愿)。但不要害怕。只需用ListView替换ScrollView,一切都应该没问题。

更新: 你应该在这个街区特别注意:

<uk.co.senab.actionbarpulltorefresh.extras.actionbarsherlock.PullToRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ptr_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Your content, here we're using a ScrollView -->

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </ScrollView>

</uk.co.senab.actionbarpulltorefresh.extras.actionbarsherlock.PullToRefreshLayout>

您不应使用com.lucaapp.app.PullToRefreshLayout代替uk.co.senab.actionbarpulltorefresh.extras.actionbarsherlock.PullToRefreshLayout