Java 从SQLite获取JSON数据并填充到ListView中

Java 从SQLite获取JSON数据并填充到ListView中,java,android,json,sqlite,listview,Java,Android,Json,Sqlite,Listview,我已经编写了一个程序,其中我正在解析JSON,然后将JSON数据存储到SQLite中,但这里我需要您的指导,以便使用SQLite将数据显示到列表中 现在,无论何时我关闭Internet连接都不会将数据放入列表,请告诉我需要在DatabaseHelper类中使用什么代码来获取所有记录,以及需要在MainActivity中应用什么更改才能将代码显示到ListView中 请参阅下面我用来将数据存储到数据库中的代码,DatabaseHelper.java:- public class DatabaseH

我已经编写了一个程序,其中我正在解析JSON,然后将JSON数据存储到SQLite中,但这里我需要您的指导,以便使用SQLite将数据显示到列表中

现在,无论何时我关闭Internet连接都不会将数据放入列表,请告诉我需要在DatabaseHelper类中使用什么代码来获取所有记录,以及需要在MainActivity中应用什么更改才能将代码显示到ListView中

请参阅下面我用来将数据存储到数据库中的代码,DatabaseHelper.java:-

public class DatabaseHelper extends SQLiteOpenHelper {

    // Database Version
    private static final int DATABASE_VERSION = 2;
    // Database Name
    private static final String DATABASE_NAME = "storeJSON";
    // Table Name
    private static final String TABLE_MEMBER = "churchResults";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        // Create Table Name
        db.execSQL("CREATE TABLE " + TABLE_MEMBER + 
                  "(Id VARCHAR(100)," +
                  " Title VARCHAR(100));");

        Log.d("CREATE TABLE","Create Table Successfully");
    }

    // Insert Data
    public long InsertData(String strId, String strTitle) {
        // TODO Auto-generated method stub

         try {
            SQLiteDatabase db;
            db = this.getWritableDatabase(); // Write Data

            ContentValues Val = new ContentValues();
            Val.put("Id", strId); 
            Val.put("Title", strTitle);

            long rows = db.insert(TABLE_MEMBER, null, Val);

            db.close();
            return rows; // return rows inserted.

         } catch (Exception e) {
            return -1;
         }
    }

    // Update Data
    public long UpdateData(String strId, String strTitle){
    // TODO Auto-generated method stub

        try {
            SQLiteDatabase db;
            db = this.getWritableDatabase(); // Write Data

            ContentValues Val = new ContentValues();
            Val.put("Id", strId);
            Val.put("Title", strTitle);

            long rows = db.update(TABLE_MEMBER, Val, "Id=?",
                    new String[] { String.valueOf(strId) });

            db.close();
            return rows; // return rows updated.

        } catch (Exception e) {
            return -1;
        }   
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_MEMBER);
        // Re Create on method  onCreate
        onCreate(db);
    }

}
和活动代码,我正在使用它将数据显示到ListView中,MainActivity.java:-

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

 //  initialize databaseHelper object in oncreate of Activity before using it
        dHelper = new DatabaseHelper(MainActivity.this);

        // Hashmap for ListView
        contactList = new ArrayList<HashMap<String, String>>();

        // Creating JSON Parser instance
        jParser = new JSONParser();

        // getting JSON string from URL
        jObject = jParser.getJSONFromUrl(url);

        try {
            // Getting Array of events
            jArray = jObject.getJSONArray(TAG_CHURCH);

            // looping through All events
            for(int i = 0; i < jArray.length(); i++){
                JSONObject c = jArray.getJSONObject(i);

                // Storing each json item in variable
                strId = c.getString(TAG_ID);
                Log.d("strId :: --", strId);
                strTitle = c.getString(TAG_TITLE);
                Log.d("strTitle :: --", strTitle);

                dHelper.InsertData(strId, strTitle);

                // creating new HashMap
                HashMap<String, String> map = new HashMap<String, String>();

                // adding each child node to HashMap key => value
                map.put(TAG_ID, strId);
                map.put(TAG_TITLE, strTitle);

                // adding HashList to ArrayList
                contactList.add(map);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }


        /**
         * Updating parsed JSON data into ListView
         * */
        ListAdapter adapter = new SimpleAdapter(this, contactList,
                R.layout.activity_list,
                new String[] { TAG_TITLE }, new int[] {
                        R.id.title });

        setListAdapter(adapter);

        // selecting single ListView item
        final ListView lv = getListView();

        // Launching new screen on Selecting Single ListItem
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long iD) {
                strId = contactList.get(position).get(TAG_ID);
                Log.d("strId-onItemClick :: --", strId);
                strTitle = contactList.get(position).get(TAG_TITLE);
                Log.d("strTitle-onItemClick :: --", strTitle);
                Toast.makeText(getApplicationContext(),"Id-"+strId+"Title-"+strTitle, Toast.LENGTH_LONG);
            }
        });     
    }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//在使用databaseHelper对象之前,在oncreate of Activity中初始化该对象
dHelper=新数据库助手(MainActivity.this);
//ListView的Hashmap
contactList=新的ArrayList();
//创建JSON解析器实例
jParser=newjsonparser();
//从URL获取JSON字符串
jObject=jParser.getJSONFromUrl(url);
试一试{
//获取事件数组
jArray=jObject.getJSONArray(塔古教堂);
//在所有事件中循环
for(int i=0;ivalue
地图放置(标签ID,strId);
地图放置(标签标题、标签);
//将哈希列表添加到ArrayList
联系人列表。添加(地图);
}
}捕获(JSONException e){
e、 printStackTrace();
}
/**
*将解析的JSON数据更新到ListView中
* */
ListAdapter=新的SimpleAdapter(此,contactList,
R.layout.activity_列表,
新字符串[]{TAG_TITLE},新int[]{
R.id.title});
setListAdapter(适配器);
//选择单个ListView项
最终ListView lv=getListView();
//在选择单个列表项时启动新屏幕
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长iD){
strId=联系人列表.get(位置).get(标签ID);
Log.d(“strId onItemClick::-”,strId);
strTitle=联系人列表.get(位置).get(标签标题);
Log.d(“strTitle onItemClick::-”,strTitle);
makeText(getApplicationContext(),“Id-”+strId+“Title-”+strtle,Toast.LENGTH\u LONG);
}
});     
}

将数据提取到游标中,并使用游标适配器将数据填充到游标中listview@r4jiv007您能告诉我如何在现有程序中实现游标以将数据填充到listview中吗?