Как я могу получить эти конкретные данные из Firebase в моем списке приложений Android Studio? - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь получить конкретные данные из Google Firebase, которые специфичны для каждого пользователя, вошедшего в систему. В основном, я хочу получить данные «поля», перечисленные под идентификаторами пользователей, но в отдельном классе в Google Firebase база данных в реальном времени. Я хочу иметь возможность отображать данные каждого поля в виде списка в действии в моем приложении, но всякий раз, когда я пытаюсь его запустить, приложение просто закрывается.

Я уже пытался запустить приложение под ссылками на класс 'users'. Но это не сработало. Я также попытался запустить под классом 'fields', но это также не работает.

Вот мой FarmActivity.java, в котором я хочу, чтобы «просмотр списка» данных поля отображался.

public class FarmActivity extends AppCompatActivity {


ListView listView;
FirebaseDatabase database;
DatabaseReference ref;
ArrayList<String> list;
ArrayAdapter<String> adapter;
FieldInformation fieldInformation;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_farm);

    listView = (ListView )findViewById(R.id.listView);
    database = FirebaseDatabase.getInstance();
    ref = database.getReference("Fields");
    list = new ArrayList<>();
    adapter = new ArrayAdapter<String>(this, R.layout.user_field_info, R.id.userInfo, list);
    fieldInformation = new FieldInformation();

    ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds:dataSnapshot.getChildren()){
                fieldInformation = ds.getValue(FieldInformation.class);
                list.add(fieldInformation.getFieldName().toString() + "  " + "\n"+ fieldInformation.getCrop().toString() + "  ");
            }
            listView.setAdapter(adapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

Вот мой FieldInformation.java, где я указал строки для FarmActivity

public class FieldInformation {


public String crop;
public String fieldName;

public FieldInformation(String crop, String fieldName) {

    this.crop = crop;
    this.fieldName = fieldName;

}

public FieldInformation(){

}

public String getCrop() {
    return crop;
}

public void setCrop(String crop) {
    this.crop = crop;
}

public String getFieldName() {
    return fieldName;
}

public void setFieldName(String fieldName) {
    this.fieldName = fieldName;
}
}

1 Ответ

0 голосов
/ 16 апреля 2019

Ваш адаптер должен иметь список, а ваш адаптер должен иметь конструктор, который принимает список.Вы инициализируете свой адаптер в FarmActivity со списком в нем и удаляете установленный адаптер, затем устанавливаете его после инициализации адаптера, наконец, добавьте adapter.notifydatasetchanged ();где вы где устанавливаете свой адаптер.Не стесняйтесь размещать свой адаптер и помогите исправить его.

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