jeudi 19 mars 2015

how to use sharepreferences in sqlite

i have an sqlite database that i am reading data from and it is working but the problem is i want it to display details base on the name on the list selected.


this ia my database class



package com.mall.our;

import java.util.ArrayList;
import java.util.HashMap;

import com.mall.first.MainActivity;

import android.content.ContentValues;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.preference.PreferenceManager;

public class DBTools extends SQLiteOpenHelper {

Context applicationContext;
public DBTools(Context applicationContext){

super(applicationContext, "contactbook.db", null, 1);

}

@Override
public void onCreate(SQLiteDatabase database) {

String query = "CREATE TABLE contacts ( contactId INTEGER PRIMARY KEY, fromm TEXT, too TEXT ," +
"state TEXT, message TEXT, time TEXT, latest TEXT, rig TEXT, picc TEXT)";

database.execSQL(query);

}

@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {

String query = "DROP TABLE IF EXISTS contacts";

database.execSQL(query);
onCreate(database);

}

public void insertContact(HashMap<String, String> queryValues){

SQLiteDatabase database = this.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("fromm", queryValues.get("fromm"));
values.put("too", queryValues.get("too"));


database.insert("contacts", null, values);

database.close();

}

public int updateContact(HashMap<String, String> queryValues){

SQLiteDatabase database = this.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("fromm", queryValues.get("fromm"));
values.put("too", queryValues.get("too"));

return database.update("contacts", values,
"contactId" + " = ?", new String[] {queryValues.get("contactId") });

}

public void deleteContact(String id){

SQLiteDatabase database = this.getWritableDatabase();

String deleteQuery = "DELETE FROM contacts WHERE contactId='" + id + "'";

database.execSQL(deleteQuery);

}

public ArrayList<HashMap<String, String>> getAllContacts(){

ArrayList<HashMap<String, String>> contactArrayList = new ArrayList<HashMap<String, String>>();


SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences( applicationContext.getApplicationContext());
String friend = sp.getString("user", "anon");

String selectQuery = "SELECT * FROM contacts WHERE too='" + friend + "'";


SQLiteDatabase database = this.getWritableDatabase();

Cursor cursor = database.rawQuery(selectQuery, null);

if(cursor.moveToFirst()){

do{

HashMap<String, String> contactMap = new HashMap<String, String>();

contactMap.put("contactId", cursor.getString(0));
contactMap.put("fromm", cursor.getString(1));
contactMap.put("too", cursor.getString(2));


contactArrayList.add(contactMap);

} while(cursor.moveToNext());

}

return contactArrayList;

}

public HashMap<String, String> getContactInfo(String id){

HashMap<String, String> contactMap = new HashMap<String, String>();

SQLiteDatabase database = this.getReadableDatabase();

String selectQuery = "SELECT * FROM contacts WHERE contactId='" + id + "'";

Cursor cursor = database.rawQuery(selectQuery, null);

if(cursor.moveToFirst()){

do{

contactMap.put("contactId", cursor.getString(0));
contactMap.put("fromm", cursor.getString(1));
contactMap.put("too", cursor.getString(2));


} while(cursor.moveToNext());

}

return contactMap;

}

}


and the name is gotten form class called Chat.java when the list in chat.java is click it is meant to get the name of the class in the list and store is using sharedpreferences .... and that is what the DBtools.java class is meant to use to determine what to display..


and is is giving me null pointer exception.... which means it is not pointing to anything can so one help me out..


this is the chat.java class



package com.mall.our;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import com.actionbarsherlock.app.SherlockListFragment;

import com.mall.first.JSONParser;
import com.mall.first.Login;
import com.mall.first.MainActivity;

import com.mall.first.R;


public class Chat extends SherlockListFragment {
JSONParser jsonParser = new JSONParser();
private static final String TAG_POSTS = "posts";
public static final String TAG_ID = "id";
public static final String TAG_NAME = "name";
public static final String TAG_pic = "pic";
public static final String TAG_MESSAGE = "message";
public static final String TAG_CATEGORIES_LOGO = "categories_logo";

/*
//user details
private static final String NAME = "name";
private static final String AGE = "age";
private static final String STATUS = "status";
private static final String PIC = "pic";
private static final String SEX = "sex"; String friendname,status;

private static final String TAG_SUCCESS = "success";*/
//user
private static final String URL = "http://ift.tt/1EwvEX6";
private static final String URL_CATEGORY = "http://ift.tt/1FaDCdJ";

private BaseAdapter mAdapter;
private ListView lv;
SharedPreferences sp ;
Bundle bon = new Bundle();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.friends, container, false);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

new LoadComments().execute();
}

class LoadComments extends AsyncTask<Void, Void, ArrayList<HashMap<String,String>>> {
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());

pDialog.setIndeterminate(false);
pDialog.setCancelable(true);

}

@Override
protected ArrayList<HashMap<String, String>> doInBackground(Void... arg0) {

ArrayList<HashMap<String, String>> categoryList = new ArrayList<HashMap<String, String>>();

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
String username = sp.getString("username", "anon");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", username));
JSONObject json = jsonParser.makeHttpRequest(URL_CATEGORY, "POST",
params);

try {

JSONArray categories = json.getJSONArray(TAG_POSTS);
for (int i = 0; i < categories.length(); i++) {
String id = categories.getJSONObject(i).getString("TAG_ID");
String name = categories.getJSONObject(i).getString("TAG_NAME");
String pic = categories.getJSONObject(i).getString("TAG_pic");
String message = categories.getJSONObject(i).getString("TAG_MESSAGE");

HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_ID, id);
map.put(TAG_NAME, name);
map.put(TAG_pic, pic);
map.put(TAG_MESSAGE,message);

categoryList.add(map);
}
}catch (Throwable e){
e.printStackTrace();
}
return categoryList;
}

@Override
protected void onPostExecute(ArrayList<HashMap<String, String>> result) {
super.onPostExecute(result);

mAdapter = new OtherlistAdapter(getActivity(),result);
setListAdapter(mAdapter);
lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View viewClicked,
final int position, long id) {
// Clear all previous data in database
@SuppressWarnings("unchecked")
HashMap<String, String> friendname =
(HashMap<String, String>) mAdapter.getItem(position);
String n=friendname.get(TAG_NAME);
SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(getActivity());
Editor edit = sp.edit();
edit.putString("user",n);


edit.commit();

Intent i = new Intent(getActivity(),Chatting.class);
startActivity(i);
}

});

}
}
}


enter code here


Aucun commentaire:

Enregistrer un commentaire