Poniżej kod metody fillDeviceList.
Listę mam od razu całą,ale przetwarzam, dodaje do modelu pokolei to co odczytam. Czy w takim wypadku powinno być w done czy uzywając process?
Próbowałem rzucić do done ale wtedy program przytnie aż metoda fillDeviceList się wykona.
W moim kodzie najpierw musi pobrać z servera więc przycinka troche trwa. Podzielić to na metody pobierające z servera i wypelniajace model? umieścić do doInBackground pobranie z servera, a to co ściągnie wrzucić do wypełnienia modelu w done() - wtedy powinno być chyba szybciej?
I jescze takie pytanie gdzie umiescic to setIcon lub jesli lepiej setVisible? Chce wyswietlac gif od ladowania.
private boolean fillDeviceList()
{
Document d = httpConnections.getDeviceList(this.login, this.password);
if(d == null)
return false;
return this.fillDeviceList(d);
}
private boolean fillDeviceList(Document d)
{
XPathFactory xpfactory = null;
XPath path = null;
String id = null;
try
{
xpfactory = XPathFactory.newInstance();
path = xpfactory.newXPath();
int attrCount = ((Number)path.evaluate("count(devices/id)" , d, XPathConstants.NUMBER)).intValue();
for(int i = 1; i <= attrCount; i++) // indeksy w XPath zaczynaja sie od 1
{
id = path.evaluate("devices/id["+ i +"]", d);
this.deviceListModel.add(i-1, id); // indeksy w XPath zaczynaja sie od 1 w modelu od 0
}
return true;
}
catch(XPathExpressionException e)
{
e.printStackTrace();
return false;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
}