Xamarin.android monodroid CustomAdapter NotifyDataSetChanged不工作

Xamarin.android monodroid CustomAdapter NotifyDataSetChanged不工作,xamarin.android,adapter,Xamarin.android,Adapter,我的问题是((BaseAdapter)listAdapter).NotifyDataSetChanged()不起作用。我用定时器每X分钟看一次新闻。我做了调试,看到了dataadapter的变化,但在屏幕上没有任何变化。 如果我缩放屏幕上看到的新数据。加载时未激发listview单击事件。更改listadapter并执行缩放单击事件后,此事件将生效 你能帮帮我吗 [Activity (Label = "SportNews")] public class SportNews

我的问题是
((BaseAdapter)listAdapter).NotifyDataSetChanged()不起作用。我用定时器每X分钟看一次新闻。我做了调试,看到了dataadapter的变化,但在屏幕上没有任何变化。
如果我缩放屏幕上看到的新数据。加载时未激发listview单击事件。更改listadapter并执行缩放单击事件后,此事件将生效

你能帮帮我吗

[Activity (Label = "SportNews")]            
public class SportNews : Activity
{
    RssFeedItemAdapter listAdapter;
    JavaList<FeedItem> items = new JavaList<FeedItem>();
    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);

        SetContentView(Resource.Layout.list_view);

        items = RssHelper.Instance.SportNews();

        //ListAdapter = new ArrayAdapter<string> (this, Resource.Layout.list_item, items);
        listAdapter = new RssFeedItemAdapter(this,items);

        ListView listView = FindViewById<ListView>(Resource.Id.listView);

        listView.Adapter = listAdapter;

        ((BaseAdapter)listAdapter).NotifyDataSetChanged();

        listView.ItemClick += new EventHandler<AdapterView.ItemClickEventArgs>(listView_ItemClick);

        Timer timer = new Timer(PushNews, null, TimeSpan.Zero, TimeSpan.FromMinutes(15)); // get time from user preferences...
    }
    private void PushNews(object state)
    {
        items = RssHelper.Instance.SportNews();
        JavaList<FeedItem> feeds = new JavaList<FeedItem>();
        feeds.Add(new FeedItem()
        {
         NewsPicture = "http://www.website.com/pic/test.jpg",
         NewsTitle = "Test news",
         NewsUrl = "http://www.google.com",
        });
        listAdapter = new RssFeedItemAdapter(this,feeds);
        ((BaseAdapter)this.listAdapter).NotifyDataSetChanged();
    }

    void listView_ItemClick(object sender, Android.Widget.AdapterView.ItemClickEventArgs e)
    {
        //Get our item from the list adapter
        var item = this.listAdapter.GetItemAtPosition(e.Position);

        var intent = new Intent();
        intent.SetClass(this, typeof(NewsView));
        intent.PutExtra("Url", item.NewsUrl);
        StartActivity(intent);
    }
}
[活动(Label=“SportNews”)]
公共课体育新闻:活动
{
RssFeedItemAdapter列表适配器;
JavaList items=newjavalist();
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.list\u视图);
items=RssHelper.Instance.SportNews();
//ListAdapter=new ArrayAdapter(此,Resource.Layout.list_项,项);
listAdapter=新的RssFeedItemAdapter(此,项);
ListView ListView=FindViewById(Resource.Id.ListView);
Adapter=listAdapter;
((BaseAdapter)listAdapter).NotifyDataSetChanged();
listView.ItemClick+=新事件处理程序(listView\u ItemClick);
Timer Timer=新计时器(PushNews,null,TimeSpan.Zero,TimeSpan.FromMinutes(15));//从用户首选项获取时间。。。
}
私有新闻(对象状态)
{
items=RssHelper.Instance.SportNews();
JavaList提要=新的JavaList();
feeds.Add(新的FeedItem()
{
新闻图片=”http://www.website.com/pic/test.jpg",
NewsTitle=“测试新闻”,
新闻URL=”http://www.google.com",
});
listAdapter=新的RssFeedItemAdapter(此,馈送);
((BaseAdapter)this.listAdapter).NotifyDataSetChanged();
}
void listView_ItemClick(对象发送者,Android.Widget.AdapterView.ItemClickEventArgs e)
{
//从列表适配器获取我们的项目
var item=this.listAdapter.GetItemAtPosition(e.Position);
var intent=新intent();
SetClass(this,typeof(NewsView));
intent.PutExtra(“Url”,item.NewsUrl);
星触觉(意向);
}
}

我意识到,当我像zoom一样刷新屏幕时,dataadapter会随着新列表而更改。我是否需要在“NotifyDataSetChanged()”之后调用另一个方法?listView\u ItemClick不会启动!我找到了答案。更改了PushNews方法,如下所示:RunOnUiThread(()=>{listAdapter.UpdateFeeds(items);((BaseAdapter)this.listAdapter.NotifyDataSetChanged();});是的,最初代码的问题是每次都在PushNews()中创建一个新的列表适配器,但ListView仍将使用最初在OnCreate()中创建的旧适配器。