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