Skip to content

Instantly share code, notes, and snippets.

@NikitiJ
Created August 26, 2019 06:42
Show Gist options
  • Save NikitiJ/0688cc03857b32837b634f85fc47ac2d to your computer and use it in GitHub Desktop.
Save NikitiJ/0688cc03857b32837b634f85fc47ac2d to your computer and use it in GitHub Desktop.
ChatFragment
public class ChatFragment extends Fragment {
private static final String ARG_MANAGER = "manager";
private List<MessageModel> messages = new ArrayList<>();
private MessageItemAdapter messageItemAdapter = new MessageItemAdapter(messages);
private Unbinder unbinder;
@BindView(R.id.progressbar_loading_container)
FrameLayout progressbarLoadingView;
@BindView(R.id.recyclerView_messagesContainer)
RecyclerView messagesContainer;
@BindView(R.id.editText_messageInput)
AppCompatEditText messageInput;
@BindView(R.id.imageButton_sendMessage)
ImageButton sendMessage;
private ManagerModel managerModel;
public ChatFragment() {
// Required empty public constructor
}
public static ChatFragment newInstance(ManagerModel managerModel) {
ChatFragment fragment = new ChatFragment();
Bundle args = new Bundle();
args.putSerializable(ARG_MANAGER, managerModel);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
managerModel = (ManagerModel) getArguments().getSerializable(ARG_MANAGER);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_chat, container, false);
unbinder = ButterKnife.bind(this, view);
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
LinearLayoutManager linearLayoutManager
= new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
messagesContainer.setLayoutManager(linearLayoutManager);
messagesContainer.addItemDecoration(new LinearVerticalSpacingItemDecoration(
HelperUtils.convertDensityPixelsToPixels(getContext(), 16)));
messagesContainer.setAdapter(messageItemAdapter);
sendMessage.setOnClickListener(this::sendMessage);
loadMessages();
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
private void loadMessages() {
progressbarLoadingView.setVisibility(View.VISIBLE);
for (int i = 0; i <= 10; i++) {
MessageModel currMsgModel = new MessageModel();
if (i % 2 == 0) {
currMsgModel.author = 0;
} else {
currMsgModel.author = 1;
messageItemAdapter.setManagerPhotoUrl("https://picsum.photos/200");
}
currMsgModel.dateSend = new SimpleDateFormat("HH:mm:ss")
.format(Calendar.getInstance().getTime());
currMsgModel.text = "Текст номер сообщения " + i;
currMsgModel.managerId = "1234";
messages.add(currMsgModel);
}
messageItemAdapter.notifyDataSetChanged();
messagesContainer.scrollToPosition(messageItemAdapter.getItemCount() - 1);
progressbarLoadingView.setVisibility(View.GONE);
}
private void sendMessage(View view) {
messagesContainer.smoothScrollToPosition(messageItemAdapter.getItemCount() - 1);
Toast.makeText(getContext(), "Tab with manager " + managerModel.firstName,
Toast.LENGTH_SHORT).show();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment