我從來沒有在SQlite android數據庫上工作過。所以如果可能的話,我會非常感謝這個問題中的一些勺子餵食/指針。將JSON格式的服務器數據存儲到Android Sqlite數據庫
我有一個服務,它給我一個形式爲JSON
的狀態名稱列表,我需要解析並存儲到Android數據庫中並將其顯示到ListView
上。 目前正在成功地得以只是解析JSON
數據,因爲它來了,然後直接顯示它到ListView
用下面這段代碼的幫助:
public class OpenMeetingsListActivity extends ListActivity
{
private Context context;
private static String url = "http://myurl.com/mycountry/statelist.php";
private static final String TAG_POSTS = "posts";
private static final String TAG_SN = "sn";
JSONArray posts = null;
ArrayList<HashMap<String, String>> jsonlist = new ArrayList<HashMap<String, String>>();
ListView lv ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
setContentView(R.layout.main);
TextView t=(TextView)findViewById(R.id.textView_header);
t.setText("Select Your State");
new ProgressTask(OpenMeetingsListActivity.this).execute();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String stateSelected = ((TextView) v.findViewById(R.id.sn)).getText().toString();
String url="http://myurl.com/mycountry/citylist.php?stname="+URLEncoder.encode(stateSelected);
Intent intent=new Intent(OpenMeetingsListActivity.this,OpenMeetingsListActivity_Items.class);
intent.putExtra("url", url);
intent.putExtra("stateSelected",stateSelected);
startActivity(intent);
}
private class ProgressTask extends AsyncTask<String, Void, Boolean> {
private ProgressDialog dialog;
OpenMeetingsListActivity op;
public ProgressTask(ListActivity activity) {
Log.i("1", "Called");
context = activity;
dialog = new ProgressDialog(context);
}
/** progress dialog to show user that the backup is processing. */
/** application context. */
private Context context;
protected void onPreExecute() {
this.dialog.setMessage("Progress start");
this.dialog.show();
}
@Override
protected void onPostExecute(final Boolean success) {
if (dialog.isShowing()) {
dialog.dismiss();
}
ListAdapter adapter = new SimpleAdapter(context, jsonlist,
R.layout.list_openmeeting_item, new String[] { TAG_SN }, new int[] {
R.id.sn });
setListAdapter(adapter);
// selecting single ListView item
lv = getListView();
}
protected Boolean doInBackground(final String... args) {
JSONParser jParser = new JSONParser();
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(url);
try {
posts = json.getJSONArray(TAG_POSTS);
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try
{
for(int i = 0; i < posts.length(); i++){
JSONObject c = posts.getJSONObject(i);
String sn = c.getString(TAG_SN);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_SN, sn);
jsonlist.add(map);
} }catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
}
現在的變化,我需要在此代碼,以或說什麼我需要添加到這個代碼是我需要的JSON數據存儲這就是從鏈接
進場在androi數據庫首先。然後我需要從數據庫中獲取這些數據並將其顯示到android中的ListView
上。
我用,我需要再次解析的網址,如
http://myurl.com/mycountry/citylist.php?stname=「+ URLEncoder.encode(stateSelected)
隔壁班的展現在各個城市完成後(上面的類中選擇的狀態),上面的url以JSON
的形式給出了城市的名稱,需要重新解析並存儲到數據庫中,並顯示在ListView
上
最後,當一個點擊它重定向到形成以下
http://myurl.com/mycountry/openmeet.php?reg=「+狀態+」 & cityvalid =「+城市這個網址的第三和最後類的ListView一個城市的名字
使用前兩個類提供的信息。該網址提供了一些JSON
數據,這些數據也需要解析,存儲並顯示在ListView
上。
因此,我在這裏的應用程序有三個類: 1.在第一個類中,狀態名顯示在View上。 2.在第二類中,相應的城市名稱顯示在視圖上,具體取決於上一課中選擇哪個州。 3.在第三類中,選定州和選定城市的組合網址提供與該特定城市相關的信息詳情。
所有數據來自服務器。
我已經能夠通過簡單地將來自服務器的數據直接顯示在ListView
上來實現此功能。現在我需要先將它存儲到數據庫中,然後在ListView
上顯示所有三個類。
任何幫助表示讚賞。