2011-06-09 137 views
0

我是Android新手,所以我無法估計如何保存從httprequest通過Json獲取的數據庫(SQLite)中的數據。
這裏是我的代碼:將數據從Json對象保存到數據庫(SQLite)

  final ArrayList<HashMap<String, String>> mylist4 = new ArrayList<HashMap<String, String>>(); 

    try{ 
     JSONObject jObj = new JSONObject(rfiItems); 
     JSONArray data4 = jObj.getJSONArray("data"); 
     //data4 = json4.getJSONArray("data"); 
      //Toast.makeText(getApplicationContext(), data4.toString(), Toast.LENGTH_LONG).show(); 

       for(int i=0;i<data4.length();i++){      
        HashMap<String, String> map = new HashMap<String, String>();  
        JSONObject e = data4.getJSONObject(i); 

        map.put("id", String.valueOf(i)); 
        map.put("rfi_data1", "" + e.getString("item_type")); 
        map.put("rfi_data2", "" + e.getString("change_number")); 
        map.put("rfi_data3", "" + e.getString("to_vendor")); 
        map.put("rfi_data4", "" + e.getString("status")); 
        map.put("rfi_data5", "" + e.getString("title")); 
        map.put("rfi_data6", "" + e.getString("change_date")); 
        map.put("rfi_data7", "" + e.getString("responded_date")); 
        mylist4.add(map); 

       }  
      }catch(JSONException e)  { 
       Log.e("log_tag", "Error parsing data "+e.toString()); 
      } 

      ListAdapter adapter4 = new SimpleAdapter(this, mylist4 , R.layout.item_list4, 
             new String[] { "rfi_data1", "rfi_data2","rfi_data3", "rfi_data4","rfi_data5","rfi_data6","rfi_data7"}, 
           new int[] { R.id.rfi_item_type, R.id.rfi_change_no,R.id.rfi_to_vendor,R.id.rfi_status,R.id.rfi_title,R.id.rfi_change_date,R.id.rfi_responded_date }); 
             setListAdapter(adapter4); 

任何幫助真的會被讚賞。感謝

+0

hi @abk你想要保存生成的JSON pakcket嗎? – Karthik 2011-06-09 05:57:40

+0

其實我只是想保存相應的數據。 – 2011-06-09 06:04:35

+0

你的意思是你想保存地圖內的內容? – Karthik 2011-06-09 06:07:43

回答

2

DataBean.java類創建在對象的活動class..set值getter和setter方法

public class DataBean { 

     private String item_type = null; 
     private String change_number = null; 

     public String getItem_type() { 
      return item_type; 
     } 
     public void setItem_type(String itemType) { 
      item_type = itemType; 
     } 
     public String getChange_number() { 
      return change_number; 
     } 
     public void setChange_number(String changeNumber) { 
      change_number = changeNumber; 
     } 


    } 

,並插入到數據庫

 private DatabaseHelper mDbHelper; 
     DataBean dataBean; 
     private Cursor mNotesCursor; 
     private NewsCursorAdapter adapter = null; 

      mDbHelper = new DatabaseHelper(this); 
      ArrayList<DataBean> liststck = new ArrayList<DataBean>(); 



     for(int i=0;i<data4.length();i++){      

       JSONObject e = data4.getJSONObject(i); 

       dataBean = new DataBean(); 

       dataBean.setChange_number(e.getString("eqid")); 
       dataBean.setItem_type(e.getString("magnitude")); 

        liststck.add(dataBean); 

       } 


      mDbHelper.deleteRecords(); 
      for (DataBean dataBean : liststck) { 
       mDbHelper.insertdata(dataBean); 
      } 
      mNotesCursor = mDbHelper.retrievedata(); 
      startManagingCursor(mNotesCursor); 

      adapter.changeCursor(mNotesCursor); 
      adapter.notifyDataSetChanged(); 

你必須創建NCursorAdapter類dispay結果(如自定義列表視圖)。 這裏data.xml文件是你的自定義佈局。這兩個內容的TextView ......「KEY_NO」和「key_item」你的數據庫表的列名...

public class NCursorAdapter extends CursorAdapter { 

     private Cursor mCursor; 
     private Context mContext; 
     private final LayoutInflater mInflater; 


     public NCursorAdapter(Context context, Cursor c) { 
      super(context, c); 
      // TODO Auto-generated constructor stub 
      mInflater = LayoutInflater.from(context); 
      mContext = context; 
     } 

     @Override 
     public void bindView(View view, Context context, Cursor cursor) { 
      // TODO Auto-generated method stub 
      TextView title = (TextView) view.findViewById(R.id.title); 
      title.setText(cursor.getString(cursor.getColumnIndex("key_no"))); 

      TextView date = (TextView) view.findViewById(R.id.date); 
      date.setText(cursor.getString(cursor.getColumnIndex("key_item"))); 

     } 

     @Override 
     public View newView(Context context, Cursor cursor, ViewGroup parent) { 
      // TODO Auto-generated method stub 
      final View view = mInflater.inflate(R.layout.data, parent, false); 

      return view; 
     } 

    } 

在你的數據庫類插入數據和檢索數據

public Long insertdata(DataBean dataBean) { 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(KEY_NO, dataBean.getChange_number()); 
     contentValues.put(KEY_ITEM, dataBean.getItem_type()); 
     return sqliteDatabase.insert(DATABASE_TABLE, null, contentValues); 
    } 


public Cursor retrievedata() { 
      return sqliteDatabase.query(DATABASE_TABLE, new String[] { KEY_ROWID,KEY_NO, KEY_ITEM }, null,null); 

     } 

我希望這是對您的應用程序有用。