2015-01-27 4 views
0

나는 윈도우 폰 8.1 app을 만들고있다. 나는 listview에 (서) 클릭 한/두드린 항목을 저장하려고 노력하고있다. 그러나 나는 어떻게하는지 모른다.windows phone 8.1 history

강령 메신저 시도 할 일 :

List<string> History = new List<string>(); 

    private async Task SaveTextFile(string str) 
    { 
     StorageFolder Folder1 = ApplicationData.Current.LocalFolder; 
     StorageFolder Folder2 = await Folder1.CreateFolderAsync("Sample Save", CreationCollisionOption.OpenIfExists); 
     StorageFile File1 = await Folder2.CreateFileAsync("History.txt", CreationCollisionOption.ReplaceExisting); 
     byte[] data = Encoding.Unicode.GetBytes(str); 
     using (var f = await File1.OpenStreamForWriteAsync()) 
     { 
      await f.WriteAsync(data, 0, data.Length); 
     } 
    } 

    private async Task<string> GetTextFile() 
    { 
     StorageFolder Folder1 = ApplicationData.Current.LocalFolder; 
     StorageFolder Folder2 = await Folder1.CreateFolderAsync("Sample Save", CreationCollisionOption.OpenIfExists); 
     try 
     { 
      StorageFile File1 = await Folder2.GetFileAsync("History.txt"); 
      return (await FileIO.ReadTextAsync(File1)); 
     } 
     catch (Exception) 
     { 
      return ""; 
     } 
    } 

    private async void Refresh_It() 
    { 
     try 
     { 
      string Str1 = await GetTextFile(); 
      TextBox1.Text = Str1; 
      string[] Str2 = Str1.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries); 
      for (int i = 0; i < Str2.Count(); i++) 
      { 
       History.Add(Str2[i]); 
      } 

      for (int i = 0; i < ListView1.Items.Count; i++) 
      { 
       if (History.IndexOf(ListView1.Items[i].ToString()) != -1) 
       { 
        ListView1.Items[i] = ListView1.Items[i].ToString() + " Clicked"; 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      Label1.Text = ex.Message; 
     } 


    } 

    private async void LayoutRoot_Loaded(object sender, RoutedEventArgs e) 
    { 
     for (int i = 0; i < 40; i++) 
     { 
      ListView1.Items.Add(i.ToString()); 
     } 
     Refresh_It(); 
    } 

    private async void ListView1_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     try 
     { 
      string selecteds = e.AddedItems.First().ToString(); 
      History.Add(selecteds); 
      string str1 = ""; 
      for (int i = 0; i < History.Count; i++) 
      { 
       str1 += History[i]; 
       if (i != (History.Count -1)) { str1 += "/"; } 
      } 
      await SaveTextFile(str1); 
      History.Clear(); 

     } 
     catch (Exception ex) 
     { 
      Label1.Text = ex.Message; 
     } 

     Refresh_It(); 

    } 

XML :

 <Grid x:Name="LayoutRoot" Loaded="LayoutRoot_Loaded"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <ListView x:Name="ListView1" Grid.Row="1" Background="White" Foreground="Black" SelectionChanged="ListView1_SelectionChanged"/> 
    <ScrollViewer Height="Auto" Grid.Row="0"> 
     <TextBlock x:Name="Label1"/> 
    </ScrollViewer> 

</Grid> 
내 코드 메신저에서

이 역사 "에 넣어하는 히스토리 파일의 텍스트와 분할을 얻기 위해 노력 (A 문자열 목록) ". 선택이 변경되면 항상 "History (list)"에 문자열을 추가합니다. 그러나 어떤 이유로 내 코드가 작동하지 않는 문제는 목록 항목이 "History (문자열 목록)"에 있는지 확인하고 나누는 것입니다.

내 응용 프로그램에 "24 Clicked"를 추가하려면 History에 "24"가 있으면 ListView를 클릭하십시오. pageLoad에 기록을로드하고 항목을 클릭하면

도움말. 나쁜 영어에 대해 유감스럽게 생각합니다.

답변

0

왜 SQLite를 사용하지 않습니까? SQLite가 더 유용하고 훨씬 더 편리해질 것입니다.