Чтобы передать список фрагменту, напишите этот код в своей деятельности, т.е. просто приведите результат в

ой код для извлечения данных из базы данных с использованием класса databasehelper

 public List<Hospitals> getHospitals(Context context){
    Hospitals hospitals = null;
    List<Hospitals> hospitalList = new ArrayList<>();
    openDatabase(context);
    Cursor cursor = database.rawQuery("SELECT * FROM buildings WHERE category_id = 1", null);
    cursor.moveToFirst();
    while(!cursor.isAfterLast()){
        hospitals = new Hospitals(cursor.getInt(0), cursor.getString(1), cursor.getFloat(2), cursor.getFloat(4));
        hospitalList.add(hospitals);
        cursor.moveToNext();
    }
    cursor.close();
    closeDatabase();

    return hospitalList;
}

А вот и моя классная больница

public class Hospitals {
private int id;
private String name;
private Float latitude;
private Float longhitude;

public Hospitals(int id, String name, Float latitude, Float longhitude ){
    this.id = id;
    this.name = name;
    this.latitude = latitude;
    this.longhitude = longhitude;

}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Float getLatitude() {
    return latitude;
}

public void setLatitude(Float latitude) {
    this.latitude = latitude;
}

public Float getLonghitude() {
    return longhitude;
}

public void setLonghitude(Float longhitude) {
    this.longhitude = longhitude;
}

}

и вот мой код в основной деятельности, чтобы передать список <> к фрагменту

List<Hospitals> result = databaseHelper.getHospitals(this);
        Bundle bundle = new Bundle();
        bundle.putParcelableArrayList("valuesArray", result);
        GmapFragment gmapFragment = new GmapFragment();
        gmapFragment.setArguments(bundle);
        fragmentManager.beginTransaction().replace(R.id.mainLayout, gmapFragment).commit();

Я получил 2 аргумента в putParcelableArrayList () - Неверный тип 2 аргумента. Найдено: 'java.util.List', обязательно: 'java.util.ArrayList

как решить эту ошибку?

Ответы на вопрос(3)

Решение Вопроса

java.util.List', обязательно: 'java.util.ArrayList

На первый тайныйСПИСОК вArrayList .

 List<Hospitals> result = databaseHelper.getHospitals(this);
 ArrayList<Hospitals> al_HOSPITAL = new ArrayList<>(result.size());
 al_HOSPITAL.addAll(result);

затем

Bundle bundle = new Bundle();
bundle.putSerializable("valuesArray", al_HOSPITAL);

Вы должны использоватьParcelable .

AFAIK ИспользованиеParcelable лучше чемСериализуемый .

Parcelable являетсяtime-consuming and error-prone process .

Интерфейс для классов, экземпляры которых могут быть записаны и восстановлены из Участка. Классы, реализующие интерфейс Parcelable, также должны иметь ненулевое статическое поле с именем CREATOR типа, который реализует интерфейс Parcelable.Creator.

public class Hospitals implements Parcelable {

в заключениеClean-Rebuild-Run , Надеюсь это поможет .

public class Hospitals implement Parcelable {

Затем реализовать методыParcelable.

Чтобы передать список фрагменту, напишите этот код в своей деятельности, т.е. просто приведите результат вArrayList<Hospitals>:

List<Hospitals> result = databaseHelper.getHospitals(this);
    Bundle bundle = new Bundle();
    bundle.putParcelableArrayList("valuesArray", (ArrayList<Hospitals>)result);
    GmapFragment gmapFragment = new GmapFragment();
    gmapFragment.setArguments(bundle);
    fragmentManager.beginTransaction().replace(R.id.mainLayout, gmapFragment).commit();

public class Hospitals implements Serializable {
    private int id;
    private String name;
    private Float latitude;
    private Float longhitude;

    public Hospitals(int id, String name, Float latitude, Float longhitude )
    {
       this.id = id;
       this.name = name;
       this.latitude = latitude;
       this.longhitude = longhitude;
    }
  ....
}

и положить сериализуемый в пучок:

List<Hospitals> result = databaseHelper.getHospitals(this);
    Bundle bundle = new Bundle();
    bundle.putSerializable("valuesArray", result);
    GmapFragment gmapFragment = new GmapFragment();
    gmapFragment.setArguments(bundle);
    fragmentManager.beginTransaction().replace(R.id.mainLayout, gmapFragment).commit();
 FarshidABZ15 окт. 2017 г., 09:29
@IntelliJAmiya Спасибо
 IntelliJ Amiya15 окт. 2017 г., 09:28
Добавлятьimplements Serializable
 Zia Ur Rahman27 сент. 2018 г., 19:47
Список <Больницы> не работает, нужен ArrayList <Больницы>. Разве нет?

Ваш ответ на вопрос