package com.maksym.ABSPager;
import android.app.Activity;
import android.app.ProgressDialog;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.app.SherlockListFragment;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
public class FragmentTab1 extends SherlockFragment {
private ArrayList<GoogleImageBean> listImages = new ArrayList<GoogleImageBean>();
private EditText txtSearchText;
private Button searchbtn, pushbtn;
private ListView imageslistview;
Activity activity;
String strSearch = null;
private int number = 1;
private getImageTask task;
public DBAdapter db;
public FragmentTab1() {
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
activity = getSherlockActivity();
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
private View.OnClickListener searchbtnOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
strSearch = txtSearchText.getText().toString();
strSearch = Uri.encode(strSearch);
System.out.println("Search string => "+strSearch);
listImages.clear();
task = new getImageTask();
task.execute();
}
};
private View.OnClickListener pushbtnOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
pushToDB(listImages);
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Get the view from fragmenttab1.xml
View view = inflater.inflate(R.layout.fragmenttab1, container, false);
txtSearchText = (EditText) view.findViewById(R.id.txtViewSearch);
searchbtn = (Button) view.findViewById(R.id.btnSearch);
searchbtn.setOnClickListener(searchbtnOnClickListener);
pushbtn = (Button) view.findViewById(R.id.push_btn);
pushbtn.setOnClickListener(pushbtnOnClickListener);
imageslistview = (ListView) view.findViewById(R.id.imagesLV);
return view;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
setUserVisibleHint(true);
}
public class getImageTask extends AsyncTask<Void,Void,Void> {
JSONObject json;
ProgressDialog dialog;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
dialog = ProgressDialog.show(getActivity(), "", "Please wait...");
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
String google = "http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=";
String perpage = "&rsz=8";
String count = "&start="+String.valueOf(number);
String charset = "UTF-8";
URL url;
try {
url = new URL(google+ URLEncoder.encode(strSearch,charset)+perpage+count);
URLConnection connection = url.openConnection();
String line;
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while((line = reader.readLine()) != null) {
builder.append(line);
}
System.out.println("Builder string => "+builder.toString());
json = new JSONObject(builder.toString());
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if(dialog.isShowing())
{
dialog.dismiss();
}
try {
JSONObject responseObject = json.getJSONObject("responseData");
JSONArray resultArray = responseObject.getJSONArray("results");
listImages.addAll(getImageList(resultArray));
displayList(listImages);
System.out.println("Result array length => "+resultArray.length());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public ArrayList<GoogleImageBean> getImageList(JSONArray resultArray)
{
ArrayList<GoogleImageBean> listImages = new ArrayList<GoogleImageBean>();
GoogleImageBean bean;
try
{
for(int i=0; i<resultArray.length(); i++)
{
JSONObject obj;
obj = resultArray.getJSONObject(i);
bean = new GoogleImageBean();
bean.setTitle(obj.getString("title"));
bean.setThumbUrl(obj.getString("tbUrl"));
bean.setUrl(obj.getString("url"));
System.out.println("Thumb URL => "+obj.getString("tbUrl"));
listImages.add(bean);
}
return listImages;
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
private void displayList(ArrayList<GoogleImageBean> images) {
imageslistview.setAdapter(new LazyAdapter(getActivity(),images,strSearch));
}
public void pushToDB(ArrayList<GoogleImageBean> images){
db = new DBAdapter(getSherlockActivity());
db.OpentoWrite();
for (GoogleImageBean im : images){
db.createImageBean(im);
}
db.Close();
}
}