Created
August 26, 2019 06:42
-
-
Save NikitiJ/0688cc03857b32837b634f85fc47ac2d to your computer and use it in GitHub Desktop.
ChatFragment
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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