2016-03-24 5 views
0

Я пытаюсь настроить gridview, которое будет обновляться при выполнении нового поиска.Android - обновление GridView при нажатии кнопки

это мой призыв настроить GridView

final GridElement_Results adapter = new GridElement_Results(this, savedInstanceState, track_name, album_name, track_num, album_id, album_link); 
    grid = (GridView)findViewById(R.id.grid_results); 
    grid.setAdapter(adapter); 

Как вы можете видеть, я передаю ему кучу массивов.

Нажав кнопку, вызывается функция getTracks(), которая получает новые данные с сервера. Массивы обновляются с новыми данными, которые я проверил, работает.

icon_activesearch.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 

             getTracks("newsearchterm"); 

             adapter.notifyDataSetChanged(); 
             grid.invalidateViews(); 

            } 
           } 
    ); 

И тогда я называю adapter.notifyDataSetChanged() и grid.invalidateViews() для обновления и перерисовки сетки. Но, очевидно, я делаю что-то не так.

Это потому, что я устанавливаю адаптер как окончательный? Чтобы получить доступ к нему в методе onClick, мне нужно установить его в final.

Что я должен изменить, чтобы заставить его работать.

+0

добавить 'getTracks()' метод –

+0

Вы проходящие новые результаты в адаптере? – Francesc

+0

из того, что я вижу, вы не передаете объекту типа List, ArrayList или Array на ваш адаптер. Как именно адаптер получает данные, которые он показывает? – Anonymous

ответ

0

вы должны ждать, пока новые данные не будут получать уведомив адаптер, но вы звоните оповещать сразу после getTracks() без каких-либо задержек

+0

Вы хотите сказать, что notifyDataSetChanged вызывается до завершения HTTP-запроса? Как добавить задержку? Спать? – fractal5

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