2016-08-31 1 views
0

私は、バックまたは次のボタンをクリックしたときにWebサービスを使用して自分のWebサイトからデータをロードするアプリケーションで作業しています。私は3回前のボタンをクリックしたときに今、その後、一度アイテムリストビューをクリックし、その後、私のリストビュー項目Xamarin:List View Item ItemClickイベントトリガーを複数回実行する

private async void LoadPosts(int year, int month){ 
    IPostService postService = new PostService(); 

    var posts = await postService.GetPosts(year, month); 

    PostAdapter adapter = new PostAdapter(Activity, posts.ToList(); 

    _lstView.Adapter = adapter; 

    _lstView.ItemClick += _lstView_ItemClick; 
} 

private void _lstView_ItemClick(object sender, AdapterView.ItemClickEventArgs e){ 
    var item = _lstView.GetItemAtPosition(e.Position).Cast<Post>(); 

    var bundle = new Bundle(); 
    bundle.PutInt("post_id", item.ID); 

    var nextFragment = new PostDetailFragment { Arguments = bundle }; 

    var fragmentTransaction = this.Activity.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.content_frame, nextFragment).Commit(); 
} 

private void _btnPrev_Click(object sender, EventArgs e){ 
    _selectedDate = _selectedDate.AddMonths(-1); 

    LoadPosts(_selectedDate.Year, _selectedDate.Month); 
} 

にそのアダプタを読み込む私のカスタムPostAdapterクラスにそれらのデータをロードします。それは、リストビューアイテムのアイテムクリックイベントの3回トリガされます。何か案は?

+3

'_lstView.ItemClick'を1回だけ設定してください。あなたが 'LoadPosts'を実行したときではありません。投稿を読み込むたびに、別のitemClickハンドラが追加されます。 – ElefantPhace

+0

あなたは正しいです、ありがとう –

答えて

2

あなたはおそらく何にonCreateの同等は、あなたが3回のイベントのクリックを取得している理由は、ポストがロードされているので、毎回ある

_lstView.ItemClick += _lstView_ItemClick; 

で、あなたのLoadPosts方法の外に、この行を移動する必要があり、別のイベントハンドラをListViewに追加しています。

関連する問題