Как изменить этот код для работы с данным элементом

Чтобы решить эту проблему, используйте следующий код:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference messagesRef = rootRef.child("messages");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<MessageModel> chatModelsArrayList = new ArrayList<>();

        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            MessageModel messageModel = ds.getValue(MessageModel.class);
            chatModelsArrayList.add(messageModel );
            Log.d("TAG", messageModel.getName() + " / " + messageModel.getText());
        }

        //Call method to update widget
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
messagesRef.addListenerForSingleValueEvent(valueEventListener);

Вывод в логарифме будет:

Amr Kamal / fsafsfa
Amr Kamal / hii
//And so on
1
задан Rory McCrossan 18 January 2019 в 19:51
поделиться

1 ответ

Если вы исправите синтаксические ошибки, значит, ваш код работает. Для этого добавьте отсутствующий ) в блок on() и удалите console.log(), как он ссылался на element, когда он был вне области видимости. Если вы хотите увидеть значение свойства CSS, поместите console.log() в обработчик события click.

$(document).on('click', '.myclass', function(e) {
  var radius = getCssByRule('border-radius', this);
  console.log(radius);
});

function getCssByRule(rule, element) {
  const values = Array.from(document.querySelectorAll('*'))
    .filter(e => parseInt(window.getComputedStyle(e).getPropertyValue(rule)) !== 0)
    .map(e => window.getComputedStyle(e).getPropertyValue(rule));

  return values;
}
.myclass {
  border-radius: 10px;
  padding: 10px;
  background-color: #C00;
  color: #FFF;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="myclass">Foo</div>

Тем не менее, вы делаете это намного сложнее, чем нужно. Вы уже включили jQuery для присоединения обработчика событий click, так почему бы не использовать его для получения настройки CSS для border-radius? Это одна строка:

$(document).on('click', '.myclass', function(e) {
  var css_now = $(this).css('border-radius');
  console.log(css_now);
});
.myclass {
  border-radius: 10px;
  padding: 10px;
  background-color: #C00;
  color: #FFF;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="myclass">Foo</div>

0
ответ дан Rory McCrossan 18 January 2019 в 19:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: