2015-12-04 2 views
2

У меня есть ListView, который использует SwipeRefreshLayout. оно работает. но я не всегда хочу, чтобы pull обновил анимацию или обратный вызов для запуска.Каков правильный способ отключения SwipeRefreshLayout pull для обновления

В моем случае действие pull to refresh синхронизирует представление с сервером, но синхронизация сервера может быть необязательно отключена в качестве предпочтения. когда синхронизация отключена, я не хочу, чтобы приведение к рефери было вообще.

Что в настоящее время делает подкласс SwipeRefreshLayout и переопределяет `canChildScrollUp ', чтобы« лежать », когда на самом деле это невозможно, но я не хочу анимации.

таким образом:

private class ListFragmentSwipeRefreshLayout extends SwipeRefreshLayout 
{ 
    public ListFragmentSwipeRefreshLayout(Context context) { super(context); } 

    @Override 
    public boolean canChildScrollUp() 
    { 
     final ListView view = getListView(); 
     if (view.getVisibility() == View.VISIBLE) 
      return !shouldShowRefresh(view); 

     return false; 
    } 
} 

где реализация `shouldShowRefresh» считает ли он может, на самом деле, прокручивать в сочетании с моими настройками синхронизации сети.

Этот способ работы, но я задаю этот вопрос, потому что он звучит как общее требование, и объединение `canChildScrollUp 'довольно беспорядочно.

спасибо.

+0

Почему вы просто не используете SwipeRefreshLayout, когда вы не хотите и используете обычный список в этом случае? разве это не так просто? – Nanoc

+0

@Nanoc, 'setEnabled 'делает трюк, как показано ниже. Ваш подход был бы лучше, только если один или другой был необходим для жизни представления. как оказалось, я хочу изменить включение, пока представление активно. –

ответ

4

Если у меня все получилось, вы хотите включить и отключить SwipeRefreshLayout с учетом состояния синхронизации. Вы можете сделать что-то вроде этого

if(sync){ 
    swipeRefreshLayout.setEnabled(true); 
else 
    swipeRefreshLayout.setEnabled(false); 

где синхронизация является логическое значение, которое говорит, что если синхронизация включена или нет.

+0

спасибо. У меня создалось впечатление, что 'setEnabled 'связан с включением самого макета и отключит мой список. Вы правы, это включение включает или отключает действие салфетки. Это ответ спасибо. –

+0

Рад помочь! :) –

 Смежные вопросы

  • Нет связанных вопросов^_^