Én még tartozom egy kóddal ha jól emlékszem Még mindig nem oldódott meg a problémám, bár azóta nem is néztem még rá.
Szóval, a problémám ugyebár az volt, hogy egyik fragment-en töltögetek egy táblába dolgokat, a másikon pedig meg akarom azt jeleníteni. De a két fragment közötti váltogatáskor az ArrayList-em bővül az új objektummal, de a ListView nem épül újra.
Fragment1:
Kitöltjük az űrlapot és gombnyomásra hozzáadjuk az új objektumot, ezzel nincs is baj, bár lehetne még finomítani.
if(v.getId() == R.id.btnAddAmount) {
String title = etTitle.getText().toString();
amount = Float.valueOf(etAmount.getText().toString());
int cat = spCategory.getSelectedItemPosition();
DatabaseHelper db = new DatabaseHelper(getActivity());
CostItem c = new CostItem(0, title, amount, cat, status, null, (int) salaryPercent, 1);
db.newCostRow(c);
CostModel.CostItems.clear();
cm.setCostItem();
}
Fragment2:
onCreate-ben létrehozok egy ArrayList-et és onCreateView-ban létrehozom magát a listát.
adapter = new CostArrayAdapter(
getActivity(), R.layout.cost_row, ids);
listview.setAdapter(adapter);
ArrayList:
CostModel cm = new CostModel(getActivity());
cm.setCostItem();
CostModel:
public static void LoadModel(int id, String title, float amount, int category_id, int status, String date, int percent, int salary_id) {
CostItems.add(new CostItem(id, title, amount, category_id, status, date, percent, salary_id));
}
public void setCostItem() {
cost_id = db.getCostID();
for(int id : cost_id) {
CostModel.LoadModel(id,
db.getCostItem(id, CostTableStatic.rCOST_TITLE),
Integer.parseInt(db.getCostItem(id, CostTableStatic.rCOST_AMOUNT)),
Integer.parseInt(db.getCostItem(id, CostTableStatic.rCOST_CATEGORY_ID)),
Integer.parseInt(db.getCostItem(id, CostTableStatic.rCOST_STATUS)),
db.getCostItem(id, CostTableStatic.rCOST_DATE),
Integer.parseInt(db.getCostItem(id, CostTableStatic.rCOST_PERCENT)),
Integer.parseInt(db.getCostItem(id, CostTableStatic.rCOST_SALARY_ID)));
}
}
Így ahogy másolgattam a kódot találtam benne fura dolgokat, amiken lehetne módosítani, pl. Fragment1-nél felesleges clear-ni a CostItem-et és újra létrehozni, elég lenne csak meghívni a LoadModel-t.
Remélem elég információt bemásoltam, a ListView újraépítése nincs benne mert csak gyenge próbálkozásaim voltak, nem tudom hogy mi lenne a megfelelő megoldás ebben az esetben.
"Amikor már azt hittem kint vagyok, ezek mindig visszarántottak..."