@MaximZeroeff

Как поместить результаты работы парсера во фрагменты?

Здравствуйте, сообщество Toster!
Прошу сильно не бить. Недавно начал изучать программирование под Андроид и столкнулся с такой проблемой.
Не могу понять как результаты работы парсера поместить в нужные мне фрагменты.

Имеется такой парсер json:

import android.app.Activity;
    import android.app.ProgressDialog;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.widget.ListView;
    
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    
    
    public class MainActivity extends Activity {
    	// Declare Variables
    	JSONObject jsonobject;
    	JSONArray jsonarray;
    	ListView listview;
    	ListViewAdapter adapter;
    	ProgressDialog mProgressDialog;
    	ArrayList<HashMap<String, String>> arraylist;
    	static String TITLE = "title";
    	static String SHORT_STORY = "short_story";
    	static String CENA = "cena";
    	static String SKIDKA = "skidka";
    	static String CATEGORY = "category";
    	static String IMAGE = "image";
    
    
    
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		// Get the view from listview_main.xml
    		setContentView(R.layout.listview_main);
    		// Execute DownloadJSON AsyncTask
    		new DownloadJSON().execute();
    	}
    
    
    
    
    	// DownloadJSON AsyncTask
    	private class DownloadJSON extends AsyncTask<Void, Void, Void> {
    
    		@Override
    		protected void onPreExecute() {
    			super.onPreExecute();
    			// Create a progressdialog
    			mProgressDialog = new ProgressDialog(MainActivity.this);
    			// Set progressdialog title
    			mProgressDialog.setTitle("Android JSON Parse Tutorial");
    			// Set progressdialog message
    			mProgressDialog.setMessage("Loading...");
    			mProgressDialog.setIndeterminate(false);
    			// Show progressdialog
    			mProgressDialog.show();
    		}
    
    		@Override
    		protected Void doInBackground(Void... params) {
    			// Create an array
    			arraylist = new ArrayList<HashMap<String, String>>();
    			// Retrieve JSON Objects from the given URL address
    			jsonobject = JSONfunctions.getJSONfromURL("http://raccoon-media.ru/json.json");
    
    			try {
    				// Locate the array name in JSON
    				jsonarray = jsonobject.getJSONArray("prod");
    
    				for (int i = 0; i < jsonarray.length(); i++) {
    					HashMap<String, String> map = new HashMap<String, String>();
    					jsonobject = jsonarray.getJSONObject(i);
    					// Retrive JSON Objects
    					map.put("title", jsonobject.getString("title"));
    					map.put("short_story", jsonobject.getString("short_story"));
    					map.put("cena", jsonobject.getString("cena"));
    					map.put("skidka", jsonobject.getString("skidka"));
    					map.put("image", jsonobject.getString("image"));
    					map.put("category", jsonobject.getString("category"));
    					// Set the JSON Objects into the array
    					arraylist.add(map);
    				}
    			} catch (JSONException e) {
    				Log.e("Error", e.getMessage());
    				e.printStackTrace();
    			}
    			return null;
    		}
    
    		@Override
    		protected void onPostExecute(Void args) {
    			// Locate the listview in listview_main.xml
    			listview = (ListView) findViewById(R.id.listview);
    			// Pass the results into ListViewAdapter.java
    			adapter = new ListViewAdapter(MainActivity.this, arraylist);
    			// Set the adapter to the ListView
    			listview.setAdapter(adapter);
    			// Close the progressdialog
    			mProgressDialog.dismiss();
    		}
    	}
    
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu;
    		MenuInflater inflater = getMenuInflater();
    		inflater.inflate(R.menu.activity_main, menu);
    		return super.onCreateOptionsMenu(menu);
    	}
    }


И имеется главная активити (сделанная как описано здесь habrahabr.ru/post/236567/) с вкладками через SlidingTabLayout и SlidingTabStrip, где каждая вкладка это фрагмент.

Как результаты этого парсера запихнуть в одну из вкладок, другого парсера - в другую вкладку и т.д. ?

Заранее спасибо за помощь!

PS
Ответ найден, см. в комментарии.
  • Вопрос задан
  • 486 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MaximZeroeff Автор вопроса
Оказывается это сделать очень легко.
Во фрагменте, внутри onViewCreated:
просто выполнить нужную функцию вот так: new DownloadJSON().execute();
Перед этим весь код этой функции поместить вместе с кодом фрагмента, но изменить
MainActivity.this (в 2-х местах) - на getActivity().

Но появилась другая проблема:
Как сделать чтобы new DownloadJSON().execute() выполнялся только один раз?
Сейчас он выполняется каждый раз при вызове фрагмента.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы