package com.deardhruv.swipevolley.fragments; import java.util.ArrayList; import org.json.JSONArray; import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import com.android.volley.VolleyError; import com.android.volley.examples.toolbox.updated.IJSONParseListener; import com.android.volley.examples.toolbox.updated.JSONRequestHandler; import com.deardhruv.swipevolley.R; import com.deardhruv.swipevolley.adapters.ItemDetailAdapter; import com.deardhruv.swipevolley.model.ImageItem; import com.deardhruv.swipevolley.network.ServiceURL; /** * A fragment which displays the List of the images. */ public class ImageListFrag extends Fragment implements IJSONParseListener, OnItemClickListener { private static final int REQUEST_IMG_LIST_CODE = 101; private ProgressDialog pd; private ListView list; private ItemDetailAdapter adapter; private View fragView; public ImageListFrag() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { fragView = inflater.inflate(R.layout.fragment_main_dummy, container, false); list = (ListView) fragView.findViewById(R.id.listView1); return fragView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getImages(getActivity()); } @Override public void onDestroy() { list.setAdapter(null); super.onDestroy(); } void getImages(Context mContext) { pd = ProgressDialog.show(mContext, "Please wait", "getting images..."); if (!pd.isShowing()) { pd.show(); } getActivity().setProgressBarIndeterminateVisibility(true); JSONRequestHandler mResponse = new JSONRequestHandler(); mResponse.getResponse(ServiceURL.mainURL, REQUEST_IMG_LIST_CODE, this); } @Override public void ErrorResponse(VolleyError error, int requestCode) { if (pd.isShowing()) { pd.dismiss(); } getActivity().setProgressBarIndeterminateVisibility(false); if (requestCode == REQUEST_IMG_LIST_CODE) { Log.e("error", "" + error.toString()); } } ArrayList<ImageItem> mList = null; @Override public void SuccessResponse(JSONObject response, int requestCode) { if (pd.isShowing()) { pd.dismiss(); } getActivity().setProgressBarIndeterminateVisibility(false); if (requestCode == REQUEST_IMG_LIST_CODE) { Log.d("reponse", "" + response.toString()); try { JSONArray mJsonArray = new JSONArray(response.get("result").toString()); if (mJsonArray.length() > 0) { mList = new ArrayList<ImageItem>(); for (int i = 0; i < mJsonArray.length(); i++) { ImageItem itemDetail = new ImageItem(); itemDetail.setImgUrl(mJsonArray.getJSONObject(i).getString("img")); itemDetail.setName(mJsonArray.getJSONObject(i).getString("name")); mList.add(itemDetail); } } } catch (Exception e) { e.printStackTrace(); } adapter = new ItemDetailAdapter(getActivity(), mList); list.setAdapter(adapter); list.setOnItemClickListener(ImageListFrag.this); } } public interface ShareViewItem { // Interface method you will call from this fragment public void shareItem(ImageItem viewItem); } ShareViewItem mCallback = null; @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mCallback = (ShareViewItem) activity; } catch (Exception ex) { ex.printStackTrace(); } } public void changeImagePreview(ImageItem itemDetail) { // Then use the interface callback to tell activity item is shared if (mCallback != null) { mCallback.shareItem(itemDetail); } } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) { if (mList != null) { changeImagePreview(mList.get(pos)); } } }