public override View GetView(int position, View convertView, ViewGroup parent)
        {
            MessageBean           item = MsgList.ElementAt(position);
            int                   type = item.Type;
            SendTextViewHolder    sendTextViewHolder    = null;
            ReceiveTextViewHolder receiveTextViewHolder = null;

            switch (type)
            {
            case MessageBean.TYPE_SEND_TEXT:
                sendTextViewHolder = new SendTextViewHolder();
                var inflater1 = Context.GetSystemService(Context.LayoutInflaterService).JavaCast <LayoutInflater>();
                convertView = inflater1.Inflate(Resource.Layout.send_message_item, parent, false);
                sendTextViewHolder.SendTextView      = (TextView)convertView.FindViewById(Resource.Id.tv_send);
                sendTextViewHolder.SendTextView.Text = item.Msg;
                convertView.Tag = sendTextViewHolder;
                break;

            case MessageBean.TYPE_RECEIVE_TEXT:
                receiveTextViewHolder = new ReceiveTextViewHolder();
                var inflater2 = Context.GetSystemService(Context.LayoutInflaterService).JavaCast <LayoutInflater>();
                convertView = inflater2.Inflate(Resource.Layout.receive_message_item, parent, false);
                receiveTextViewHolder.ReceiveTextView      = (TextView)convertView.FindViewById(Resource.Id.tv_receive);
                receiveTextViewHolder.ReceiveTextView.Text = item.Msg;
                convertView.Tag = receiveTextViewHolder;
                break;

            default:
                break;
            }

            return(convertView);
        }
예제 #2
0
 protected override void OnCreate(Bundle savedInstanceState)
 {
     base.OnCreate(savedInstanceState);
     SetContentView(Resource.Layout.ChatLayout);
     FriendName = (TextView)FindViewById(Resource.Id.textView1);
     send       = (Button)FindViewById(Resource.Id.btn_send);
     input      = (EditText)FindViewById(Resource.Id.chat_text);
     device     = MainActivity.AvaliableDevicesList.ElementAt(Intent.GetIntExtra("DeviceID", 0));
     ChatList   = (ListView)FindViewById(Resource.Id.listChat);
     if (!FriendName.Text.Equals("Chatting with") && !FriendName.Text.Equals(device.Name))
     {
         MessageBean message = MainActivity.MsgList.ElementAt(MainActivity.MsgList.Count() - 1);
         MainActivity.MsgList.Clear();
         MainActivity.MsgList.Add(message);
     }
     FriendName.Text  = device.Name;
     adapter          = new ChatAdapter(this, MainActivity.MsgList);
     ChatList.Adapter = adapter;
     adapter.NotifyDataSetChanged();
     ChatList.SetSelection(ChatList.Bottom);
     send.Click += delegate
     {
         if (device.Status)
         {
             if (!input.Text.Equals(""))
             {
                 Message = input.Text + ":msg input";
                 Data data = Data.FromBytes(System.Text.Encoding.UTF8.GetBytes(Message));
                 Log.Debug(TAG, "myEndpointId " + device.EndPoint);
                 MainActivity.mTransferEngine.SendData(device.EndPoint, data).AddOnSuccessListener(new TaskListener(this, "Send Message ")).AddOnFailureListener(new TaskListener(this, "Send Message"));
                 MessageBean item = new MessageBean();
                 item.MyName     = MainActivity.MyEndPoint;
                 item.FriendName = device.Name;
                 item.Msg        = Message.Split(":")[0];
                 item.Type       = (MessageBean.TYPE_SEND_TEXT);
                 MainActivity.MsgList.Add(item);
                 adapter.NotifyDataSetChanged();
                 input.Text = "";
                 ChatList.SetSelection(ChatList.Bottom);
             }
             else
             {
                 Toast.MakeText(this, "Enter a Message", ToastLength.Long).Show();
             }
         }
         else
         {
             Toast.MakeText(this, "The device is not connected, try again", ToastLength.Long).Show();
             MainActivity.InitiateConnection(device);
         }
     };
 }
예제 #3
0
        public void ReceiveMessage(Data data, string Endpoint)
        {
            if (MsgList.Count == 0 || !ChatActivity.device.EndPoint.Equals(Endpoint))
            {
                MsgList.Clear();
                Android.App.AlertDialog.Builder builder = new Android.App.AlertDialog.Builder(this);
                builder.SetTitle("You got a message !");
                builder.SetMessage(Endpoint + " is trying to send a message to you. do you want to accept?");
                builder.SetNegativeButton("Cancel", (senderAlert, args) =>
                {
                    string msgStr = "Refuse";
                    Data data     = Data.FromBytes(System.Text.Encoding.UTF8.GetBytes(msgStr));
                    mTransferEngine.SendData(Endpoint, data).AddOnSuccessListener(new TaskListener(this, "Refuse Connection")).AddOnFailureListener(new TaskListener(this, "Refuse Connection"));
                    return;
                });
                builder.SetPositiveButton("Yes", (senderAlert, args) =>
                {
                    string str = System.Text.Encoding.UTF8.GetString(data.AsBytes());
                    Log.Debug(TAG, "OnReceived [Message] success. msgStr-------->>>>" + str);
                    if (!str.EndsWith(":msg input"))
                    {
                        return;
                    }
                    str = str.Split(":")[0];
                    MessageBean item = new MessageBean();
                    item.MyName      = MyEndPoint;
                    item.FriendName  = FindDevice(Endpoint).Name;
                    item.Msg         = str;
                    item.Type        = (MessageBean.TYPE_RECEIVE_TEXT);
                    MsgList.Add(item);
                    Intent chat = new Intent();
                    chat.SetClass(this, typeof(ChatActivity));
                    chat.SetFlags(ActivityFlags.ClearTop);
                    chat.PutExtra("DeviceID", AvaliableDevicesList.IndexOf(FindDevice(Endpoint)));
                    StartActivity(chat);
                });
                Dialog dialog = builder.Create();
                dialog.Show();
            }

            else
            {
                string str = System.Text.Encoding.UTF8.GetString(data.AsBytes());
                Log.Debug(TAG, "OnReceived [Message] success. msgStr-------->>>>" + str);
                if (!str.EndsWith(":msg input"))
                {
                    return;
                }
                str = str.Split(":")[0];
                MessageBean item = new MessageBean();
                item.MyName     = MyEndPoint;
                item.FriendName = FindDevice(Endpoint).Name;
                item.Msg        = str;
                item.Type       = (MessageBean.TYPE_RECEIVE_TEXT);
                MsgList.Add(item);
                Intent chat = new Intent();
                chat.SetClass(this, typeof(ChatActivity));
                chat.SetFlags(ActivityFlags.ClearTop);
                chat.PutExtra("DeviceID", AvaliableDevicesList.IndexOf(FindDevice(Endpoint)));
                StartActivity(chat);
            }
        }