Потяните, чтобы обновить (SwipeRefreshLayout) Android Xamarin C # - PullRequest
0 голосов
/ 13 сентября 2018

Мне нужно добавить пул для обновления на экране домашней страницы.

В начале, axml:

исходный код

  [1]:https://pastebin.com/iZNFiqgt

Я добавил swipeRefreshLayout так:

Код SwipeRefresh

В классе я добавил этот код:

............

SwipeRefreshLayout refreshLayout

protected override void OnCreate (Bundle savedInstanceState)
{
.........

refreshLayout = FindViewById<SwipeRefreshLayout> . 
(Resource.Id.swipeRefreshLayout1);

refreshLayout.Refresh += RefreshLayout_Refresh

}

void RefreshLayout_Refresh(object sender, EventArgs e)
{
 //insert action pull to refresh 
Console.WriteLine("start pull to refresh"); //after delete it and 
insert the action 

}

Но приложение вылетает, когда я пытаюсь обновить страницу. Ошибка:

Error

Спасибо всем за поддержку !!

1 Ответ

0 голосов
/ 13 сентября 2018

SwipeRefreshLayout следует использовать всякий раз, когда пользователь может обновить содержимое представления с помощью жеста вертикальной прокрутки. Читать дальше

Итак, SwipeRefreshLayout ведет себя как контейнер, поэтому внутри SwipeRefreshLayout вы должны добавить ListView или GridView, чтобы заставить его работать, как вы можете видеть ниже:

Помните, что SwipeRefreshLayout поддерживает только одного ListView или GridView дочернего элемента.

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical">

  <android.support.v4.widget.SwipeRefreshLayout
     android:id="@+id/swipeRefreshLayout"
     android:layout_width="match_parent"
     android:layout_height="match_parent">

       <ListView 
         android:id="@+id/list"
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>

  </android.support.v4.widget.SwipeRefreshLayout>

</LinearLayout>

А затем настройте элементы представления:

SwipeRefreshLayout swipeRefreshLayout;
ListView listView;    

protected override void OnCreate(Bundle savedInstanceState)
{
   // ...

   listView = view.FindViewById<ListView>(Resource.Id.list);
   swipeRefreshLayout = view.FindViewById<SwipeRefreshLayout>(Resource.Id.swipeRefreshLayout);

   // Elevation helps users understand the relative importance of each element and focus their attention to the task at hand. (Optional)
   // swipeRefreshLayout.Elevation = 10; 

   swipeRefreshLayout.Refresh += delegate (object sender, System.EventArgs e)
   {
      // logic...
   };

   // ...
}

Также вы можете запустить SwipeRefreshLayout вручную, с помощью:

swipeRefreshLayout.Post(() => { 
   swipeRefreshLayout.Refreshing = true; 
   listView.Clickable = false; 
});

// logic...

swipeRefreshLayout.Post(() => { 
   swipeRefreshLayout.Refreshing = false; 
   listView.Clickable = true; 
});

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...