2012-01-19 4 views
1

Я работаю над классом Java в проекте Android, который суммирует записи массива, сохраненные в предыдущих классах, причем каждая запись представляет собой массив с несколькими элементами.Использование методов внутри циклов, Java и Android

Я создал методы для перемещения вперед и назад через записи, но при условии, что может быть более 100 записей, я хотел бы создать другой метод, который циклически проходит через них, а не нажимать кнопку «Далее» снова и снова , Есть ли способ сделать это?

Я обнаружил, что циклы будут показывать только последнюю запись, но ниже - лучший пример, о котором я могу думать, о том, что мне нужно.

for (int i = Selection; i<=Qty; i++){ 

Num.setText(Integer.toString(i)); 
    loadNext(); 

    try{ 
     Thread.sleep(1500); 
    }catch(InterruptedException e){} 

    if (Brk=true){ 
     break; 
    } 
} 
+0

Я не знаю об Android, но в Swing есть выделенный поток пользовательского интерфейса. Если это похоже на Android, вам придется порождать еще один поток, который выполняет цикл. В противном случае обновление пользовательского интерфейса может быть заблокировано. – Thomas

ответ

1

Это может сработать. Тем не менее, это приведет к зависанию вашего пользовательского интерфейса в каждый раз, когда вы вызываете метод sleep. В общем, когда вы имеете дело с материалом UI, никогда не используйте класс Thread. Вместо этого используйте класс Handler. Существует много документации, но если после исчерпывающего поиска вы не можете найти хороший пример, просто дайте мне знать.

1

Ваше состояние перерыв кажется неправильным, и вызывает разрывы петли на первой итерации:

if (Brk=true){ 
     break; 
    } 

Brk=true является распайка исключение, а не Comparation исключение. Он всегда будет верным. Выражение должно быть Brk==true, чтобы проверить, истинно ли значение переменной. Но опять же, это логическая переменная, так что вам не нужно сравнивать, а просто ссылаться на него в заявлении, если:

if (Brk){ 
     break; 
    } 
2

Решение, которое будет ближе всего к первоначальному ответу было бы создать фон который выполняет цикл, загружая каждый элемент внутри Activity.runOnUiThread(). Вы также можете сделать аналогичную вещь с AsyncTask и проделать обновление. Смотрите эту статью для получения дополнительной информации по обоим этим:

http://developer.android.com/resources/articles/painless-threading.html

Однако, лучшее решение, чтобы не иметь петлю на всех - только есть таймер, и увеличиваем переменную цикла каждый раз, когда пробеги таймера.

Смежные вопросы