1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
public class ChatFragment extends Fragment {
private ChatFragment activity;
private EditText input;
private ImageView fab;
private ListView listView;
ArrayList<String> userArray = new ArrayList<String>();
ArrayList<String> msgArray = new ArrayList<String>();
ArrayList<String> dateArray = new ArrayList<String>();
CustomListAdapter whatever;
private Socket mSocket;
{
try {
mSocket = IO.socket("http://###########");
} catch (URISyntaxException e) {}
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_chat, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
whatever = new CustomListAdapter(this, userArray, msgArray, dateArray);
this.activity = this;
//Associating visual elements to variables
fab = (ImageView) getView().findViewById(R.id.fab);
input = (EditText) getView().findViewById(R.id.input);
//Defining the event for new messages
mSocket.on("chat message", onNewMessage);
//Start connection with server
mSocket.connect();
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Sending the message to online chat
attemptSend();
// Clear the input
input.setText("");
}
});
}
private void attemptSend() {
String message = input.getText().toString().trim();
if (TextUtils.isEmpty(message)) {
return;
}
mSocket.emit("chat message", message);
}
private Emitter.Listener onNewMessage = new Emitter.Listener() {
@Override
public void call(final Object... args) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
JSONObject data = (JSONObject) args[0];
String username;
String message;
try {
username = data.getString("username");
message = data.getString("message");
} catch (JSONException e) {
return;
}
// add the message to view
addMessage(username, message);
}
});
}
};
public void addMessage(String user, String msg){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.getDefault());
String currentDateandTime = sdf.format(new Date());
userArray.add(user);
msgArray.add(msg);
dateArray.add(currentDateandTime);
listView = (ListView) getView().findViewById(R.id.list_of_messages);
listView.setAdapter(whatever);
}
} |
Partager