@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() выполнялся только один раз?
Сейчас он выполняется каждый раз при вызове фрагмента.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы