예제 #1
0
파일: Chat.java 프로젝트: acruche/DobleFC
  @Override
  protected void onDestroy() {
    super.onDestroy();

    // Desregistrando chat do observer
    mMessageSubject.detach(this);
  }
예제 #2
0
파일: Chat.java 프로젝트: acruche/DobleFC
  @Override
  public void updateObs() {
    Message newMessage = mMessageSubject.getLastMessage();

    // Verificando se a nova mensagem tem o mesmo numero do chat ativo
    if (newMessage.getNumber().equals(mNumeroChatAtivo)) {
      newMessage.setWasRead(1);

      // Adicionando a nova mensagem
      ((ChatAdapter) mRecyclerView.getAdapter()).addItemList(newMessage, mListMessage.size());
      mRecyclerView
          .getLayoutManager()
          .scrollToPosition(mRecyclerView.getAdapter().getItemCount() - 1);

      messageDAO.novasMensagensLidas(mNumeroChatAtivo);
    }
  }
예제 #3
0
파일: Chat.java 프로젝트: acruche/DobleFC
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);

    // Registrando CHAT no observer
    this.mMessageSubject = MessageSubject.getInstance();
    this.mMessageSubject.attach(this);

    // Instancias
    this.mBD = new BD(this);
    this.mFirebase = new Firebase(Util.FIREBASE_URL);
    this.mListMessage = new ArrayList<Message>();
    this.messageDAO = new MessageDAO(this);

    // Referências
    mNewMessage = (EditText) findViewById(R.id.et_newMessage);
    mRecyclerView = (RecyclerView) findViewById(R.id.rv_listMsg);

    // Pegando o nome
    String nomeChatAtivo = getIntent().getStringExtra("nome").toString();
    // Pegando o numero
    mNumeroChatAtivo = getIntent().getStringExtra("numero").toString();

    // Mudando o status da mensagem para lida
    messageDAO.novasMensagensLidas(mNumeroChatAtivo);
    // Buscando o log
    this.mListMessage = messageDAO.getLog(mNumeroChatAtivo);

    Toolbar toolbar = (Toolbar) findViewById(R.id.tbChat);
    // Setando como titulo e subtitulo
    toolbar.setTitle(nomeChatAtivo);
    toolbar.setSubtitle("online");
    setSupportActionBar(toolbar);

    // Ativando o botao voltar
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    // Ativando a foto que fica ao lado do botao voltar
    getSupportActionBar().setDisplayShowHomeEnabled(false);

    // Criando um LayoutManager
    LinearLayoutManager llm = new LinearLayoutManager(this);
    llm.setReverseLayout(false);
    llm.setOrientation(LinearLayoutManager.VERTICAL);

    // Setando os atributos do RecyclerView
    // mRecyclerView.setScrollContainer(true);
    mRecyclerView.setHasFixedSize(
        true); // Informa que o tamanho do recyclerView não vai mudar, ajuda na otimização.
    mRecyclerView.setLayoutManager(llm); // Setando o layoutmanager no recyclerview

    // Criando e passando a lista de mensagens para o adapter
    chatAdapter = new ChatAdapter(mListMessage, this, this);

    // Setando o Adapter no RecyclerView
    mRecyclerView.setAdapter(chatAdapter);

    // Caso a lista de mensagem esteja vazia, esconde o textview com a frase
    if (this.mListMessage.size() > 0) {
      findViewById(R.id.empty).setVisibility(View.INVISIBLE);
      mRecyclerView.getLayoutManager().scrollToPosition(mListMessage.size() - 1);
    }
  }
예제 #4
0
파일: Chat.java 프로젝트: acruche/DobleFC
 @Override
 protected void onStop() {
   super.onStop();
   MessageSubject.getInstance().setNumberChatActive("");
 }
예제 #5
0
파일: Chat.java 프로젝트: acruche/DobleFC
 @Override
 protected void onStart() {
   super.onStart();
   MessageSubject.getInstance().setNumberChatActive(mNumeroChatAtivo);
 }