Как получить элементы из списка массивов в Android - PullRequest
0 голосов
/ 17 февраля 2010

Привет всем в моем приложении, используя веб-сервис, я получаю данные из базы данных и храню эти данные в хеш-таблице. Я перенес эти данные из хэш-таблицы в массив. Этот массив данных можно отобразить в кнопке. Мой массив содержит 10 элементов Для анимации я использовал view flipper. Теперь я хочу отображать элементы массива на кнопке один за другим каждые 10 секунд. Но в методе Updater я не получил все элементы массива. Как решить этот вопрос

я отправляю свой код // в методе создания я носил этот

user_advertise - хеш-таблица

                     System.out.println(""+user_advertise.size());
             array=new String[user_advertise.size()];

            e= user_advertise.keys();

            int i = 0;
            int j=0;
            for(i=user_advertise.size();;i++){
            array[j]=e.nextElement().toString();


            LinearLayout layout = (LinearLayout) findViewById(R.id.LinearLayout01); 

            LinearLayout.LayoutParams p = new LinearLayout.LayoutParams( 
                                LinearLayout.LayoutParams.FILL_PARENT, 
                                LinearLayout.LayoutParams.WRAP_CONTENT 
                        ); 


            Button buttonView = new Button(this); 
             buttonView.setText("" +array[i]);


            Timer timing = new Timer();
            timing.schedule(new Updater(buttonView), 3000, 3000);

             ViewFlipper flipper = new ViewFlipper (this); 
             flipper.addView(buttonView);
             layout.addView(flipper,p);
             flipper.startFlipping();
             flipper.setClickable(true);
             flipper.setFlipInterval(10000);
             flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_in));
             flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_out));


            } 

            }catch(Exception e)
            {
                Log.v("Add",e.toString());

            } 

   }
private class Updater extends TimerTask {
    private final Button buttonView;

    public Updater(Button buttonView) {
        this.buttonView = buttonView;
    }

    public void run() {
        buttonView.post(new Runnable() {


            public void run() {

                int k=0;

                    buttonView.setText(" ");

                    buttonView.setText(""+array[k].toString()+"");

                if(array[++k]!= null)
                {
                    k++;
                }

            } 

1 Ответ

2 голосов
/ 17 февраля 2010

Вы определили и инициализировали int k=0; в блоке потока, поэтому при каждом запуске k всегда будет 0, поэтому вам придется определять его снаружи.

Также

if(array[++k]!= null)
{
   k++;
}

увеличит k дважды: один для теста if и один в блоке

То, что вы хотите:

if(k != array.length - 1) k++;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...