2014-12-08 3 views
-1

Прошу прощения за странное название, но я не нашел других способов объяснить это. В Fragment у меня есть ProgressDialog, который должен отображаться до тех пор, пока не будут выполнены все инструкции внутри фрагмента. Проблема в том, что она исчезает за 5 секунд до того, как макет должен быть изменен. Вот мой код:ProgressDialog исчезает до того, как все загрузится

final View view = inflater.inflate(R.layout.fragment_lista, container, false); 
GridView gv = (GridView) view.findViewById(R.id.gridView); 
Gson gson = new GsonBuilder().serializeNulls().create(); 

ProgressDialog progressDialog = ProgressDialog.show(getActivity(), "", "Loading...", true); 

    new Thread(new Runnable() { 
     @Override 
     public void run() 
     { 
      String urlLista = null; 
      try { 
       urlLista = connection("https://www.something.com"); //personal method for this connection 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      String listaTrimmed = urlLista.trim(); 
      ListaManga listaManga = gson.fromJson(listaTrimmed, ListaManga.class); 

      List prov = new ArrayList(); 
      for (int i = 0; i < 15; i++) { 
       prov.add(listaManga.getManga().get(i)); 
      } //ArrayList of 15 elements 

      GridAdapter gridadapter = new GridAdapter(getActivity(), prov); //custom adapter 
      }); 

      getActivity().runOnUiThread(new Runnable() { 
       @Override 
       public void run() 
       { 
        progressDialog.dismiss(); //Here is when the ProgressDialog obviously disappear 
        gv.setAdapter(gridadapter); 
        gridadapter.notifyDataSetChanged(); 
       } 
      }); 
     } 
    }).start(); 

Если я должен быть честным я ожидал, что с моим кодом, после dismiss() из ProgressDialog, все в этом фрагменте будет успешно загружен, но это не так. Мне нужно подождать еще 5 секунд, пока все не загрузится, и я не понимаю, почему, надеюсь, что я получу здесь несколько ответов. Если есть какие-то вопросы о моем коде, просто спросите, мне пришлось сократить множество его частей, и я не мог объяснить этот вопрос, извините. Я также попытался поместить dismiss() из ProgressDialog в сообщение с задержкой Handler, это сработало, но я отменил анимацию ProgressDialog.

ответ

1

Вы пробовали использовать метод увольнения() последним?

gv.setAdapter(gridadapter); 
gridadapter.notifyDataSetChanged(); 
progressDialog.dismiss(); 
+0

Да, я тоже пробовал, но он не меняется. Странная вещь заключается в том, что в режиме отладки установите адаптер и «обновите» это не требует времени. Поэтому я спрашивал себя: где приложение «нужно время» после отклонения диалога? –

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