Я создаю recyclerView для своего проекта, для которого я использую 2 функции в onCreate,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
System.out.println("dsdsds");
pref = getSharedPreferences("pref", Context.MODE_PRIVATE);
dbReff = FirebaseDatabase.getInstance().getReference().child("CartItem");
dbToken = FirebaseDatabase.getInstance().getReference().child("TokenNumber");
CreateList();
BuildRecyclerView();
}
Здесь я создаю список, который устанавливается в адаптере в первой функции,
cartItemArrayList = new ArrayList<>();
dbReff.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
if(!data.child("name").getValue().toString().equals("notToDisplayThisItem")) {
cartItemArrayList.add(new CartItemIdQuant(
data.child("id").getValue().toString(),
data.child("quant").getValue().toString(),
data.child("name").getValue().toString(),
data.child("price").getValue().toString()
));
Log.e("THE DATA", data.toString());
}
}
Log.e("INHERE","");
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
и 2-я функция следующая:
recyclerView = findViewById(R.id.recyclerCartView);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
cartAdapter = new CartAdapter(cartItemArrayList);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(cartAdapter);
log.e("Message"," from build recyclerVIew");
и мой класс для элемента данных выглядит следующим образом:
public class CartItemIdQuant {
private String ID;
private String Quant;
private String Name;
private String Price;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getPrice() {
return Price;
}
public void setPrice(String price) {
Price = price;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public String getQuant() {
return Quant;
}
public void setQuant(String quant) {
Quant = quant;
}
public CartItemIdQuant(String NewID, String NewQuant,String NewName,String NewPrice){
ID = NewID;
Quant = NewQuant;
Name = NewName;
Price = NewPrice;
Log.e("the" , "Method Called From Constructor");
}
public CartItemIdQuant(){
}
}
здесь журнал данных, которые я получаю и print в 1-й функции печатается, а журнал, который я печатаю в конструкторе, затем печатается через 2 секунды. Я хочу знать причину задержки в вызове, так как я должен поставить задержку для его правильной работы, чего я не хочу. Пожалуйста, помогите мне, спасибо заранее.
РЕДАКТИРОВАТЬ: здесь, согласно комментарию, есть logcat, в котором вызывается сообщение от 2-й функции до того, как список может быть создан.
2020-02-21 15:20:03.434 547-547/com.chinuEvent.chinuevent E/Message: from build recyclerVIew
2020-02-21 15:20:03.837 547-547/com.chinuEvent.chinuevent E/the: Method Called From Constructor
2020-02-21 15:20:03.838 547-547/com.chinuEvent.chinuevent E/THE DATA: DataSnapshot { key = 02, value = {price=15, name=Orange, id=02, quant=3} }