簡體   English   中英

NotifyDataSetChanged不會更新我的ListView

[英]NotifyDataSetChanged does not update my ListView

即使我正在重新讀取序列化的xml文件,NotifyDataSetChanged()也不更新我的ListView。 它僅在再次調用oncreate后更新。 閱讀一些Java代碼后,它告訴我重新填充listadapter,但這仍然行不通。 有任何想法嗎?

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
            {

                View view = inflater.Inflate(Resource.Layout.Card, null);

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

                return view;
            }


            public override void OnResume()
            {
                base.OnResume();
                List<string> nameList = new List<string>();
                string documentsPath = Android.OS.Environment.ExternalStorageDirectory + "/Gate";
                var cardPath = Path.Combine(documentsPath, "card.xml");

                if (File.Exists(cardPath))
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(List<Card>));
                    StreamReader reader = new StreamReader(cardPath);
                    cardList = (List<Card>)serializer.Deserialize(reader);
                    reader.Close();
                }
                else
                {
                    cardList = new List<Card>();
                }

                foreach (Card card in cardList)
                {
                    nameList.Add(card.name);
                }

                var adapter = new ArrayAdapter<string>(this.Activity, Android.Resource.Layout.SimpleListItem1, nameList);

                listView.Adapter = adapter;

                adapter.NotifyDataSetChanged();
            }

您只能在OnCreate中創建一次適配器並將其存儲。

然后,在OnResume()中,僅使用adapter.AddAll(nameList)更新值,並調用NotifyDataSetChanged();。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM