在this篇文章之后,我创建了一个显示List的简单应用程序。列表我来自Web服务(.asmx Web服务)。
我希望每5秒自动更新Category.all
,我不知道如何制作它。
在winforms中我使用了Timer组件,但我不知道这在xamarin中是如何工作的。
MainActivity.cs
ReciclerView
更新 我在活动课中创建了新方法,正如York Shen所建议的那样
[Activity(Label = "CibMonitor", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : AppCompatActivity
{
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
ConnectionItemsAdapter adapter;
ConnectionItem[] connectionItems;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
var ci = new ConnectionItem();
//Get list from web service
connectionItems = ci.GetList().ToArray();
//Setup RecyclerView
adapter = new ConnectionItemsAdapter(this, connectionItems);
recyclerView = FindViewById<RecyclerView>(Resource.Id.recyclerView);
recyclerView.SetAdapter(adapter);
ChangedData();
}
}
这是我在适配器类中的更新方法:
void ChangedData()
{
Task.Delay(5000).ContinueWith(t =>
{
var newData = ConnectionItem.GetList();
adapter.RefreshItems(newData);
ChangedData();
}, TaskScheduler.FromCurrentSynchronizationContext());
}
答案 0 :(得分:1)
您可以创建一个Task
,它可以帮助您每5秒更新一次recyclerView:
void ChangedData()
{
Task.Delay(5000).ContinueWith(t =>
{
adapter.NotifyDataSetChanged();
ChangedData();//This is for repeate every 5s.
}, TaskScheduler.FromCurrentSynchronizationContext());
}
修改强>
很抱歉迟到的回复,拨打ChangedData()
中的Task.Delay()
可以解决重复问题。您可以在invoke
方法中ChangedData()
OnCreate()
。希望这可以帮到你。 :)