Android Pull-to-Refresh с фрагментом ListView и настраиваемым адаптером ListView

Я построил свой проект, используя параметры запуска Android Studio (автоматически создает action bar с вкладками), поэтому для меня создается немного. Однако я реализовал list-view fragment для каждой из вкладок, использующих пользовательский adapters.

У меня возникли проблемы с добавлением библиотеки для обновления по запросу из Chris Bane< /а>. Может я неправильно импортирую? Я новичок в разработке для Android и особенно в этом новом материале Gradle.

Я импортирую репозиторий github в файл build.gradle здесь:

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 будет правильно синхронизироваться, и я увижу файлы из панели действий git в моей папке .idea в корне проекта.

Вот где я запутался:

В репозитории github "быстрый старт" написано

Первое, что вам нужно сделать, это обернуть обновляемое представление в PullToRefreshLayout:

С примером кода, делающим что-то вроде этого:

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

Предполагается, что uk.co.senab.actionbarpulltorefresh.extras — это название моего проекта, так что com.lucaapp.app?

Вот мой XML для моего ListFragment, где вы увидите мое замешательство:

<?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>

Это не даст мне никаких ошибок сразу, пока я не попытаюсь внедрить код из quick start guide в свой класс фрагмента. Я получаю ошибку Cannot Resolve Symbol при попытке импортировать эти методы репозитория github.

Я пробовал следующее, что делает импорт красным с ошибкой cannot resolve symbol:

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

person user3443430    schedule 20.03.2014    source источник
comment
Зачем использовать компиляцию «com.github.chrisbanes.actionbarpulltorefresh:extra-abc:+», когда вы используете minsdk=14? Использование: скомпилировать 'com.github.chrisbanes.actionbarpulltorefresh:library:+'   -  person Gabriele Mariotti    schedule 06.06.2014


Ответы (2)


Пробовали ли вы следовать этому руководству от Криса Бейнса: https://github.com/chrisbanes/ActionBar-PullToRefresh/wiki/QuickStart-ABS ?

Это руководство содержит все шаги, начиная с build.gradle и заканчивая фрагментами кода.

Единственное отличие: туториал для ScrollView (а не для ListView, как вы хотите). Но не пугайтесь. Просто замените ScrollView на ListView, и все должно быть в порядке.

ОБНОВЛЕНИЕ: вы должны увидеть в этом блоке особенно:

<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

person krossovochkin    schedule 21.03.2014

Теперь Android представил новую простую функцию под названием Swipe для обновления макета. См. сайт сайт разработчиков и простой пример

person Zubair    schedule 06.06.2014