从保存JSON对象数据的数据库(SQLite的) [英] Save data from Json object to Database (SQLite)

查看:162
本文介绍了从保存JSON对象数据的数据库(SQLite的)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新手在Android中,所以我不能估计我怎么保存在数据库中(SQLite的)从HTT prequest被打通的Json数据。
这是我的code:

I am newbie in Android, so I can not estimate how do I save data in database(SQLite) that were got from httprequest through Json.
Here is my code:

            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);

任何帮助将真正成为AP preciated。谢谢

Any help will really be appreciated. THANKS

推荐答案

DataBean.java类创建getter和setter方法​​

DataBean.java class create for getter and setter method

    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;
        }


    }

在对象的活动class..set值,并插入到数据库

in your Activity class..set value in object and insert into database

        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你的数据库表的列名...

you must create NCursorAdapter class for dispay result(like custom listview). here data.xml file is your custom layout. which content two textview.... "key_no" and "key_item" your database table column name...

    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;
        }

    }

在你的数据库类插入数据和检索数据。

in your database class insert data and retrieve data

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);

        }

我希望这是对你的应用程序非常有用。

I hope it is useful for your application.

这篇关于从保存JSON对象数据的数据库(SQLite的)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆