私の問題は、それ((BaseAdapter)listAdapter).NotifyDataSetChanged();
がうまくいかないことです。タイマーを使用して、X 分ごとにニュースを取得しました。デバッグを行い、dataadapter の変更を確認しましたが、画面上では何も変わりません。ズームすると、画面に新しいデータが表示されます。リストビューのクリック イベントがロード時に発生しません。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);
}
}