Как получить свойства объекта, хранящегося в списке - PullRequest
0 голосов
/ 01 июня 2019

Я получаю данные из базы данных Firebase в реальном времени, которые затем сохраняю в список, чтобы я мог их отобразить.

Моя проблема в том, что отображаемые данные не показывают сохраненный объект с его свойствами, а так называемое имя / метку или что-то похожее на это.

Что отображается:

com.example.husiapp2.Homework@1abbfc6

Что должно отображаться (Объект со свойствами):

Homework
-Title,
-Class

Мой код:

public class Homework {
    public String Title;
    public String Class;
    public String ExpireDate;

    public Homework(){}

    public Homework(String title, String aClass,String expireDate) {
        Title = title;
        Class = aClass;
        ExpireDate = expireDate;
    }

}
 DatabaseReference ref;
 Homework homework;
 final List<Homework> hw = new ArrayList<>();

 ListView hwlist;

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_hw);
        Log.d("HWAC122",hw.toString());
        hwlist = findViewById(R.id.hwlist);
        ref = FirebaseDatabase.getInstance().getReference("User").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("Homework");

        ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for(DataSnapshot ds:dataSnapshot.getChildren()){
                    homework = new Homework();
                    homework.Title = ds.getValue(Homework.class).Title;
                    homework.Class = ds.getValue(Homework.class).Class;
                    homework.ExpireDate = ds.getValue(Homework.class).ExpireDate;
                    Log.d("test123",homework.toString());
                    hw.add(homework);
                }
                SetAdapter();
            }


        });


    }
 public void SetAdapter(){
        ArrayAdapter adapter = new ArrayAdapter<Homework>(this,android.R.layout.simple_list_item_1,hw);
        hwlist.setAdapter(adapter);
    }

Ответы [ 2 ]

2 голосов
/ 01 июня 2019

com.example.husiapp2.Homework@1abbfc6 - стандартный формат строки для объектов, которые не переопределяют toString(). Он состоит из класса объекта и его местоположения в памяти JVM. Если вы хотите, чтобы toString() сгенерировал что-то еще, вам придется переопределить это и заставить вернуть то, что вы хотите напечатать.

public class Homework {
    public String Title;
    public String Class;
    public String ExpireDate;

    public Homework(){}

    public Homework(String title, String aClass,String expireDate) {
        Title = title;
        Class = aClass;
        ExpireDate = expireDate;
    }

    // Override toString
    @Override
    public String toString() {
        return "Whatever you want it to be";
    }
}

Не всегда лучше переопределить toString(). Во многих случаях лучше просто написать какую-то другую функцию, передать ей объект и вернуть ей отформатированную строку. В любом случае вам придется написать тот код, который генерирует строку.

0 голосов
/ 01 июня 2019

Реализуйте методы getter и setter в классе Java, который вы создали.Нажмите alt + insert и выберите getter и setter для всех переменных, которые вы объявили.Благодаря этому вы можете вставлять данные в базу данных firebase и получать данные из базы данных firebase

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...