2014-10-09 4 views
1

serialize 된 xml 파일을 다시 읽더라도 NotifyDataSetChanged()가 ListView를 업데이트하지 않습니다. oncreate가 다시 호출 된 후에 만 ​​업데이트됩니다. 일부 Java 코드를 읽으면서 listadapter를 다시 채우라고했으나 여전히 작동하지 않습니다. 어떤 아이디어?NotifyDataSetChanged가 ListView를 업데이트하지 않습니다.

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(); 
      } 
+0

목록보기가 비어 있다는 뜻입니까? 너는 확실한가? 명부에는 품목이 있는가? –

+0

먼저 무엇이 일어나고 있는지 말할 수 있습니까? 어떤 시나리오? 사용자는 무엇을하고 있습니까? XML 파일이 '다음'시간이 다른가요? – greenapps

+0

xml 파일을 쓰는 카드를 추가하는 활동이 있습니다. 그런 다음이 조각을 다시 시작할 때 xml 파일을 다시 읽고 새 카드로 목록을 업데이트해야합니다.하지만 지금은 oncreate()가 다시 호출되지 않으면 목록을 업데이트하지 않습니다. – user3344484

답변

1

OnCreate에서 어댑터를 한 번만 만들어 저장해야합니다.

그런 다음 OnResume()에서 adapter.AddAll (nameList)을 사용하여 값을 업데이트하고 NotifyDataSetChanged()를 호출하십시오.

+0

네이티브 버전과 매우 다른 점은 몇 분 동안이 문제에 맞서 싸워 왔으며 가장 신뢰할 수있는 방법을 지적했습니다. – ararog

관련 문제