I'm trying to sync sqlite with mysql database so i made a dbAdapter class where i created a sqlite database and another class where i made a json response and putt json in hashmap with gson
Here is Dbadapter class
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
public class DBAdaptert extends SQLiteOpenHelper {
SQLite lt= new SQLite();
public DBAdaptert(Context aplicationcontext) {
super(aplicationcontext, "recept.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase database) {
String query;
query = "CREATE TABLE recept ( id INTEGER, ime TEXT)";
database.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase database, int i, int i2) {
String query;
query = "DROP TABLE IF EXISTS recept";
database.execSQL(query);
onCreate(database);
}
public void insertIme(HashMap<String, String> queryValues) {
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("ime", queryValues.get("ime"));
database.insert("recept", null, values);
database.close();
}
public ArrayList<HashMap<String, String>> getIme() {
lt.updateSQLite();
ArrayList<HashMap<String, String>> imeList;
imeList = new ArrayList<HashMap<String, String>>();
String selectQuery = "SELECT ime FROM recept";
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
HashMap<String, String> map = new HashMap<String, String>();
map.put("ime", cursor.getString(0));
imeList.add(map);
} while (cursor.moveToNext());
}
database.close();
return imeList;
}
}
and here is the class where i make a json response
package com.example.koohar;
import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.type.TypeReference;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
/**
* Created by bozidar on 23.3.2015..
*/
public class SQLite {
DBAdaptert ad;
ArrayList<HashMap<String, String>> usersynclist;
InputStream isr = null;
HashMap<String, String> queryValues = new HashMap<String, String>();
String result = "";
public SQLite() {
try {
DefaultHttpClient klijent = new DefaultHttpClient();
HttpPost post = new HttpPost("http://ift.tt/1HERWMB");
HttpResponse respons = null;
respons = klijent.execute(post);
HttpEntity entitet = respons.getEntity();
isr = entitet.getContent();
} catch (Exception e) {
Log.e("log..tag", "error in connecting" + e.toString());
}
//prebacivanje rez u apl.
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(isr, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
isr.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log..tag", "greska u prebacivanju resumasa" + e.toString());
}
}
public void updateSQLite() {
String j="bla";
queryValues = new HashMap<String, String>();
try {
JSONObject json = new JSONObject(result);
JSONArray jaraj = json.getJSONArray("ime");
for (int i = 0;i<jaraj.length(); i++) {
JSONObject joni = (JSONObject) jaraj.get(i);
j=joni.getString("ime");
queryValues=new Gson().fromJson(j, new TypeToken<HashMap<String, String>>() {}.getType());
}
} catch (
JSONException e
)
{
// TODO Auto-generated catch block
throw new RuntimeException(e); }
ad.insertIme(queryValues);
}
}
and finally a main thread where i want to put hashmap into arraylist
package com.example.koohar;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
/**
* Created by bozidar on 22.3.2015..
*/
public class DnevniRez extends Activity {
DBAdaptert ad = new DBAdaptert(this);
ListView list;
Button but;
String[] ajmo;
ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
ArrayList<HashMap<String, String>> map = ad.getIme();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dnevnirez);
list = (ListView) findViewById(R.id.listView);
but = (Button) findViewById(R.id.button6);
if(map.size()!=0) {
ListAdapter adapter = new SimpleAdapter(DnevniRez.this, map, R.layout.activity_dnevnirez, new String[]{
"ime"}, new int[]{R.id.userName});
list.setAdapter(adapter);
}
ProgressDialog prgDialog = new ProgressDialog(this);
prgDialog.setMessage("Synching SQLite Data with Remote MySQL DB. Please wait...");
prgDialog.setCancelable(false);
}
}
when i run it it crashes and in logcat it says its an jsonexception index out of range.
Aucun commentaire:
Enregistrer un commentaire