ProgressBar在将数据加载到活动(Xamarin.Android)中时会在某个时刻停止旋转]] << [

问题描述 投票:0回答:1
我有以下屏幕:

enter image description here

当我单击Ponentes ImageButton时,ProgressBar会在加载Ponentes活动中的数据时出现。问题在于它在某个时候停止旋转。可能导致此问题的原因以及如何解决?

这里是ProgressBar Ponentes中的axml

<ProgressBar android:id = "@+id/loadingSpinner" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" android:gravity="center"/>

这里是OnCreate PonentesActivity方法:

protected override async void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.SpeakersActivity); Android.Widget.Toolbar toolbar = FindViewById<Android.Widget.Toolbar>(Resource.Id.toolbar); toolbar.NavigationOnClick += delegate { this.OnBackPressed(); }; loadingSpinner = FindViewById<ProgressBar>(Resource.Id.loadingSpinner); loadingSpinner.Visibility = ViewStates.Visible; await Task.Run(() => { //get all the speakers from the db allSpeakers = DatabaseHelper.GetAllFromTable<Speaker>("speakers.db"); //get only the international spakers internationalSpeakers = allSpeakers.Where(x => x.Nationality.Equals("international")).ToList(); //get only the national speakers nationalSpeakers = allSpeakers.Where(x => x.Nationality.Equals("national")).ToList(); RunOnUiThread(() => { speakersRecyclerView = FindViewById<RecyclerView>(Resource.Id.speakersRecyclerView); speakersLayoutManager = new LinearLayoutManager(this); speakersRecyclerView.SetLayoutManager(speakersLayoutManager); speakersAdapter = new SpeakersAdapter(internationalSpeakers); speakersAdapter.ItemClick += OnItemClick; speakersRecyclerView.SetAdapter(speakersAdapter); loadingSpinner.Visibility = ViewStates.Gone; }); }); internationalSpeakersTextView = FindViewById<TextView>(Resource.Id.internationalSpeakersTextView); internationalSpeakersTextView.Click += delegate { //change TextViews's style when selected/not-selected internationalSpeakersTextView.SetBackgroundResource(Resource.Drawable.textView_selected); nationalSpeakersTextView.SetBackgroundResource(Resource.Drawable.textView_unselected); LoadSpeakers(internationalSpeakers); }; nationalSpeakersTextView = FindViewById<TextView>(Resource.Id.nationalSpeakersTextView); nationalSpeakersTextView.Click += delegate { //change TextViews's style when selected/not-selected nationalSpeakersTextView.SetBackgroundResource(Resource.Drawable.textView_selected); internationalSpeakersTextView.SetBackgroundResource(Resource.Drawable.textView_unselected); LoadSpeakers(nationalSpeakers); }; }

[如果需要,我可以将整个Ponentes Activity]粘贴到您的位置>

我有以下屏幕:当我单击Ponentes ImageButton时,在加载Ponentes活动中的数据时会出现ProgressBar。问题在于它在某个时候停止旋转。什么...

xamarin.android spinner block loading
1个回答
0
投票
SpeakersActivity.cs

[Activity(Label = "SpeakersActivity", ScreenOrientation = ScreenOrientation.Portrait)] public class SpeakersActivity : BaseActivity { TextView internationalSpeakersTextView; TextView nationalSpeakersTextView; RecyclerView speakersRecyclerView; // Layout manager that lays out each card in the RecyclerView: RecyclerView.LayoutManager speakersLayoutManager; // Adapter that accesses the data set (speakers): SpeakersAdapter speakersAdapter; /// <summary> /// List that contains all the speakers /// </summary> List<Speaker> allSpeakers; /// <summary> /// List that contains the international speakers /// </summary> List<Speaker> internationalSpeakers; /// <summary> /// List that contains the national speakers /// </summary> List<Speaker> nationalSpeakers; ProgressBar loadingSpinner; protected override async void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.SpeakersActivity); Android.Widget.Toolbar toolbar = FindViewById<Android.Widget.Toolbar>(Resource.Id.toolbar); toolbar.NavigationOnClick += delegate { this.OnBackPressed(); }; loadingSpinner = FindViewById<ProgressBar>(Resource.Id.loadingSpinner); loadingSpinner.Visibility = ViewStates.Visible; await Task.Run(() => { //get all the speakers from the db allSpeakers = GetAllSpeakers(); //get only the international spakers internationalSpeakers = allSpeakers.Where(x => x.Nationality.Equals("international")).ToList(); //get only the national speakers nationalSpeakers = allSpeakers.Where(x => x.Nationality.Equals("national")).ToList(); RunOnUiThread(() => { speakersRecyclerView = FindViewById<RecyclerView>(Resource.Id.speakersRecyclerView); speakersLayoutManager = new LinearLayoutManager(this); speakersRecyclerView.SetLayoutManager(speakersLayoutManager); LoadSpeakers(internationalSpeakers); loadingSpinner.Visibility = ViewStates.Gone; }); }); internationalSpeakersTextView = FindViewById<TextView>(Resource.Id.internationalSpeakersTextView); internationalSpeakersTextView.Click += delegate { //change TextViews's style when selected/not-selected internationalSpeakersTextView.SetBackgroundResource(Resource.Drawable.textView_selected); nationalSpeakersTextView.SetBackgroundResource(Resource.Drawable.textView_unselected); LoadSpeakers(internationalSpeakers); }; nationalSpeakersTextView = FindViewById<TextView>(Resource.Id.nationalSpeakersTextView); nationalSpeakersTextView.Click += delegate { //change TextViews's style when selected/not-selected nationalSpeakersTextView.SetBackgroundResource(Resource.Drawable.textView_selected); internationalSpeakersTextView.SetBackgroundResource(Resource.Drawable.textView_unselected); LoadSpeakers(nationalSpeakers); }; } /// <summary> /// Load speakers inside activity /// </summary> /// <param name="speakers">speakers</param> private void LoadSpeakers(List<Speaker> speakers) { speakersAdapter = new SpeakersAdapter(speakers); speakersAdapter.ItemClick += OnItemClick; speakersRecyclerView.SetAdapter(speakersAdapter); } private void OnItemClick(object sender, string speakerResumeUrl) { var speakerDetailsActivity = new Intent(this, typeof(SpeakerDetailsActivity)); speakerDetailsActivity.PutExtra("speakerResumeUrl", speakerResumeUrl); StartActivity(speakerDetailsActivity); } public override void OnBackPressed() { StartActivity(typeof(CongressActivity)); Finish(); } private List<Speaker> GetAllSpeakers() { System.Threading.Thread.Sleep(4000); List<Speaker> speakers = new List<Speaker>(); speakers.Add(new Speaker { Photo = "https://i.imgur.com/DDH2Ckk.png", Name = "Anne-Maree Keenan", Resume = "https://51congresopodologia.com/?page_id=4004", Nationality = "international" }); speakers.Add(new Speaker { Photo = "https://i.imgur.com/DDH2Ckk.png", Name = "Anthony Redmond", Resume = "https://51congresopodologia.com/?page_id=4004", Nationality = "international" }); speakers.Add(new Speaker { Photo = "https://i.imgur.com/DDH2Ckk.png", Name = "Chris Nester", Resume = "https://51congresopodologia.com/?page_id=4004", Nationality = "national" }); speakers.Add(new Speaker { Photo = "https://i.imgur.com/DDH2Ckk.png", Name = "Amol Saxena", Resume = "https://51congresopodologia.com/?page_id=4004", Nationality = "international" }); return speakers; } }

© www.soinside.com 2019 - 2024. All rights reserved.