###前提・実現したいこと
listViewを作って表示させただけだと、前回選択したものが選択されたままになってしまい、続けて同じものを選択できないので調べたところ、SelectedItemにnullを入れれば良いことがわかりました。
初めのうちはそれで問題なかったのですが、nullを代入する前に選択した項目によって処理を振り分ける命令を追加したところ、選択するたびに強制終了するようになってしまいました。
###発生している問題・エラーメッセージ
話を単純化するために、問題が起こるミニマムなクラスを添付しました。
// 3の行を入れることにより、選択したものがすぐに解除されるようになったのですが、//1の行を入れると強制終了してしまいます。ただし、//1と同じ処理をすると思われる//2の書き方だと問題なく動きました。
また、3の行をコメントアウトすると、//1の行も//2の行も同じ結果を返しました。(もちろん選択されたままになります)
今回の例だと//2の行の書き方で対処できるのですが、実際にはカスタムセルを使った処理をしたいと思っていて、以下のように書いているのですが、
問題が解決できません。どのような書き方をするのが正解でしょうか?
listView.ItemSelected += (sender, e) => { var select = (ListData)e.SelectedItem; if (select.Menu == MENU.E_CLOSE) { //なんらかの処理; } listView.SelectedItem = null; }
よろしくお願いします。
###該当のソースコード
using System; using System.Diagnostics; using System.Collections.Generic; using Xamarin.Forms; namespace MyCookie { public class TestPage : ContentPage { public TestPage() { Padding = new Thickness(20); var listView = new ListView { RowHeight = 40 }; listView.ItemsSource = new string[] { "Item1", "Item2", "Item3", "Item4", "Item5", }; listView.ItemSelected += (sender, e) => { Debug.WriteLine(e.SelectedItem.ToString()); // 1 //Debug.WriteLine( "" + e.SelectedItem); // 2 listView.SelectedItem = null; // 3 }; Content = listView; } } }
###試したこと
https://developer.xamarin.com/guides/xamarin-forms/user-interface/listview/interactivity/
には
((ListView)sender).SelectedItem = null;
という書き方をしていたのでこちらも試しましたが、結果は変わりませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
Xamarin 6.1.3(build 19)
Mac Note Pro
OS X Yosemite(10.10.5)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/30 04:56
2016/12/30 06:57