Получить данные JSON для проекта студии Android ⇐ JAVA
-
Гость
Получить данные JSON для проекта студии Android
Итак, я пытаюсь получить данные из JSON-файла вставки. мне нужно потом иметь его в listView. Но что-то не так. Я использую метод выполнения в основном, и я могу заставить работать onPreExecute, но не onPostExecute. Кто-нибудь знает, как это работает?
public void onClick(Просмотр) { ExtragereJSON extragereJSON=новый ExtragereJSON(){ ПрогрессДиалог прогрессДиалог; @Override защищенный недействительный onPreExecute () { ProgressDialog = новый ProgressDialog (Proba_Practica_Petrescu_Rares_Mihnea.this); ProgressDialog.setMessage("Пожалуйста, подождите..."); прогрессДиалог.шоу(); } @Override protected void onPostExecute (String s) { //progressDialog.setMessage("Готово..."); //progressDialog.show(); прогрессДиалог.отмена(); если (s != ноль) { listaInregistrari.addAll(this.listaRestaurante); // Адаптер CustomAdapterNou = новый CustomAdapter(getApplicationContext(), R.layout.listviewrestaurante_layout, // getLayoutInflater(), listaInregistrari); Log.d("AsyncTask", "onPostExecute: извлечение JSON успешно"); } еще { // Обработка случая, когда извлечение JSON не удалось // Регистрируем или отображаем сообщение об ошибке Log.e("AsyncTask", "onPostExecute: не удалось извлечь JSON"); } } }; пытаться{ extragereJSON.execute(новый URL("https://pastebin.com/raw/vVBcgK7H")); } catch (MalformedURLException e) { Log.e("URLValidationError", "Неверный URL: " + e.getMessage()); е.printStackTrace(); } catch (Исключение е) { // Регистрируем или отображаем общее сообщение об ошибке Log.e("ExtractionError", "Не удалось извлечь JSON: " + e.getMessage()); е.printStackTrace(); } } }); ОК, вот мой класс ExtactJSON.
публичный класс ExtragereJSON расширяет AsyncTask {
публичный список listaRestaurante=new ArrayList(); @Override protected String doInBackground(URL... urls) { пытаться { Соединение HttpURLConnection = (HttpURLConnection) URL[0].openConnection(); Connection.setRequestMethod("GET"); InputStream inputStream=connection.getInputStream(); InputStreamReader isr = новый InputStreamReader (inputStream); BufferedReader br = новый BufferedReader (ISR); Строковая линия = ноль; Строка результата=""; while((line=br.readLine())!=null) результат+=строка; parsareJSON (результат); вернуть результат; } catch (IOException e) { Log.e("AsyncTask", "Исключение в doInBackground: " + e.getMessage()); вернуть ноль; // Возвращаем ноль или сообщение об ошибке } } частный недействительный parsareJSON (результат строки) { если (результат! = ноль) { пытаться{ JSONObject obiect = новый JSONObject (результат); Ресторан JSONArray = obiect.getJSONArray("ресторан"); for (int i = 0; i < Restaurante.length(); i++) { Ресторан JSONObject = Restaurante.getJSONObject(i); int codRestaurant = Restaurant.getInt("codRestaurant"); String numeRestaurant = Restaurant.getString("numerestaurant"); int capacitate = Restaurant.getInt("capacitate"); float venituri = (float) Restaurant.getDouble("venituri"); String TipRestaurant = Restaurant.getString("tipRestaurant"); InregistrareRestaurant ir = новый InregistrareRestaurant (codRestaurant, numeRestaurant, capacitate, venituri, TipRestaurant); listaRestaurante.add(ир); } } catch (Исключение е) { выдать новое RuntimeException(e); } } еще { Log.e("parsareJSON","JSON имеет значение null"); } }
Итак, я пытаюсь получить данные из JSON-файла вставки. мне нужно потом иметь его в listView. Но что-то не так. Я использую метод выполнения в основном, и я могу заставить работать onPreExecute, но не onPostExecute. Кто-нибудь знает, как это работает?
public void onClick(Просмотр) { ExtragereJSON extragereJSON=новый ExtragereJSON(){ ПрогрессДиалог прогрессДиалог; @Override защищенный недействительный onPreExecute () { ProgressDialog = новый ProgressDialog (Proba_Practica_Petrescu_Rares_Mihnea.this); ProgressDialog.setMessage("Пожалуйста, подождите..."); прогрессДиалог.шоу(); } @Override protected void onPostExecute (String s) { //progressDialog.setMessage("Готово..."); //progressDialog.show(); прогрессДиалог.отмена(); если (s != ноль) { listaInregistrari.addAll(this.listaRestaurante); // Адаптер CustomAdapterNou = новый CustomAdapter(getApplicationContext(), R.layout.listviewrestaurante_layout, // getLayoutInflater(), listaInregistrari); Log.d("AsyncTask", "onPostExecute: извлечение JSON успешно"); } еще { // Обработка случая, когда извлечение JSON не удалось // Регистрируем или отображаем сообщение об ошибке Log.e("AsyncTask", "onPostExecute: не удалось извлечь JSON"); } } }; пытаться{ extragereJSON.execute(новый URL("https://pastebin.com/raw/vVBcgK7H")); } catch (MalformedURLException e) { Log.e("URLValidationError", "Неверный URL: " + e.getMessage()); е.printStackTrace(); } catch (Исключение е) { // Регистрируем или отображаем общее сообщение об ошибке Log.e("ExtractionError", "Не удалось извлечь JSON: " + e.getMessage()); е.printStackTrace(); } } }); ОК, вот мой класс ExtactJSON.
публичный класс ExtragereJSON расширяет AsyncTask {
публичный список listaRestaurante=new ArrayList(); @Override protected String doInBackground(URL... urls) { пытаться { Соединение HttpURLConnection = (HttpURLConnection) URL[0].openConnection(); Connection.setRequestMethod("GET"); InputStream inputStream=connection.getInputStream(); InputStreamReader isr = новый InputStreamReader (inputStream); BufferedReader br = новый BufferedReader (ISR); Строковая линия = ноль; Строка результата=""; while((line=br.readLine())!=null) результат+=строка; parsareJSON (результат); вернуть результат; } catch (IOException e) { Log.e("AsyncTask", "Исключение в doInBackground: " + e.getMessage()); вернуть ноль; // Возвращаем ноль или сообщение об ошибке } } частный недействительный parsareJSON (результат строки) { если (результат! = ноль) { пытаться{ JSONObject obiect = новый JSONObject (результат); Ресторан JSONArray = obiect.getJSONArray("ресторан"); for (int i = 0; i < Restaurante.length(); i++) { Ресторан JSONObject = Restaurante.getJSONObject(i); int codRestaurant = Restaurant.getInt("codRestaurant"); String numeRestaurant = Restaurant.getString("numerestaurant"); int capacitate = Restaurant.getInt("capacitate"); float venituri = (float) Restaurant.getDouble("venituri"); String TipRestaurant = Restaurant.getString("tipRestaurant"); InregistrareRestaurant ir = новый InregistrareRestaurant (codRestaurant, numeRestaurant, capacitate, venituri, TipRestaurant); listaRestaurante.add(ир); } } catch (Исключение е) { выдать новое RuntimeException(e); } } еще { Log.e("parsareJSON","JSON имеет значение null"); } }
Мобильная версия