Hirdetés

Új hozzászólás Aktív témák

  • SektorFlop

    aktív tag

    válasz thon73 #1365 üzenetére

    É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.

Új hozzászólás Aktív témák