private void recreateDataView() {

    if (mIsTimestampDisplayMode) {
      mBufferListAdapter.clear();

      final int bufferSize = mDataBuffer.size();
      for (int i = 0; i < bufferSize; i++) {

        final UartDataChunk dataChunk = mDataBuffer.get(i);
        final boolean isRX = dataChunk.getMode() == UartDataChunk.TRANSFERMODE_RX;
        final String data = dataChunk.getData();
        final String formattedData = mShowDataInHexFormat ? asciiToHex(data) : data;

        final String currentDateTimeString =
            DateFormat.getTimeInstance().format(new Date(dataChunk.getTimestamp()));
        mBufferListAdapter.add(
            new TimestampData(
                "[" + currentDateTimeString + "] " + (isRX ? "RX" : "TX") + ": " + formattedData,
                isRX ? mRxColor : mTxColor));
        //                mBufferListAdapter.add("[" + currentDateTimeString + "] " + (isRX ? "RX" :
        // "TX") + ": " + formattedData);
      }
      mBufferListView.setSelection(mBufferListAdapter.getCount());
    } else {
      mDataBufferLastSize = 0;
      mTextSpanBuffer.clear();
      mBufferTextView.setText("");
    }
  }
  public void onClickClear(View view) {
    mTextSpanBuffer.clear();
    mDataBufferLastSize = 0;
    mBufferListAdapter.clear();
    mBufferTextView.setText("");

    mDataBuffer.clear();
    mSentBytes = 0;
    mReceivedBytes = 0;
    updateUI();
  }
  private void uartSendData(String data, boolean wasReceivedFromMqtt) {
    // MQTT publish to TX
    MqttSettings settings = MqttSettings.getInstance(UartActivity.this);
    if (!wasReceivedFromMqtt) {
      if (settings.isPublishEnabled()) {
        String topic = settings.getPublishTopic(MqttUartSettingsActivity.kPublishFeed_TX);
        final int qos = settings.getPublishQos(MqttUartSettingsActivity.kPublishFeed_TX);
        mMqttManager.publish(topic, data, qos);
      }
    }

    // Add eol
    if (mIsEolEnabled) {
      // Add newline character if checked
      data += "\n";
    }

    // Send to uart
    if (!wasReceivedFromMqtt
        || settings.getSubscribeBehaviour() == MqttSettings.kSubscribeBehaviour_Transmit) {
      sendData(data);
      mSentBytes += data.length();
    }

    // Add to current buffer
    UartDataChunk dataChunk =
        new UartDataChunk(System.currentTimeMillis(), UartDataChunk.TRANSFERMODE_TX, data);
    mDataBuffer.add(dataChunk);

    final String formattedData = mShowDataInHexFormat ? asciiToHex(data) : data;
    if (mIsTimestampDisplayMode) {
      final String currentDateTimeString =
          DateFormat.getTimeInstance().format(new Date(dataChunk.getTimestamp()));
      mBufferListAdapter.add(
          new TimestampData("[" + currentDateTimeString + "] TX: " + formattedData, mTxColor));
      mBufferListView.setSelection(mBufferListAdapter.getCount());
    }

    // Update UI
    updateUI();
  }