Использование методов внутри циклов, Java и Android - PullRequest
1 голос
/ 19 января 2012

Я работаю над классом 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;
    }
}

Ответы [ 3 ]

2 голосов
/ 19 января 2012

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

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

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

1 голос
/ 19 января 2012

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

  if (Brk=true){
        break;
    }

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

  if (Brk){
        break;
    }
1 голос
/ 19 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...