コード例 #1
0
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            base.OnCreateView(inflater, container, savedInstanceState);
            View view = inflater.Inflate(Resource.Layout.fragment_message_list, null);


            var user = Newtonsoft.Json.JsonConvert.DeserializeObject <User>(Arguments.GetString("userData"));

            Activity.Title = user.FirstName + " " + user.LastName;

            viewModel = new MessageViewModel(user.ObjectId);

            sendBtn      = view.FindViewById <Button>(Resource.Id.button_chatbox_send);
            chatbox      = view.FindViewById <EditText>(Resource.Id.edittext_chatbox);
            recyclerView = view.FindViewById <RecyclerView>(Resource.Id.reyclerview_message_list);
            recyclerView.SetAdapter(adapter = new MessageListAdapter(Activity, viewModel));
            recyclerView.SetLayoutManager(new LinearLayoutManager(Activity));

            var onScrollListener = new RecyclerViewOnScrollListener();

            onScrollListener.ScrolledDownEvent += (sender, e) =>
            {
                HideKeyboard();
            };
            recyclerView.AddOnScrollListener(onScrollListener);

            viewModel.Messages.CollectionChanged += (sender, args) =>
            {
                recyclerView.SmoothScrollToPosition(viewModel.Messages.Count - 1);
            };



            sendBtn.Click += async(sender, e) =>
            {
                if (chatbox.Text == "")
                {
                    return;
                }
                await viewModel.SendMessageAsync(chatbox.Text);

                chatbox.Text = "";
                HideKeyboard();
            };
            return(view);
        }