私は SQlite android データベースに取り組んだことがありません。したがって、可能であれば、この質問でいくつかのスプーンの餌付け/ポインターをいただければ幸いです。
状態名のリスト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 データを保存する必要があるということです
最初にアンドロイドのデータベースに。次に、データベースからそのデータを取得しListView
、Android に表示する必要があります。
それが終わったら、次のようなURLを再度解析する必要があります
http://myurl.com/mycountry/citylist.php?stname= "+URLEncoder.encode(stateSelected)
次のクラスで、それぞれの州 (上記のクラスで選択した州) のそれぞれの都市を表示します。上記の URL は、JSON
再度解析してデータベースに保存し、ListView
.
最後に、ListView で都市の名前をクリックすると、以下の URL を形成する 3 番目で最後のクラスにリダイレクトされます。
http://myurl.com/mycountry/openmeet.php?reg= "+state+"&cityvalid="+city
前の 2 つのクラスによって提供された情報を使用します。この URL は、JSON
再度解析、保存、および に表示する必要があるいくつかのデータを提供しますListView
。
したがって、ここでのアプリケーションには 3 つのクラスがあります。 1. 最初のクラスでは、状態名がビューに表示されます。2. 2 番目のクラスでは、前のクラスで選択された州に応じて、それぞれの都市名がビューに表示されます。3. 3 番目のクラスでは、選択された州と選択された都市の組み合わせ URL が、その特定の都市に関連する情報の詳細を提供します。
すべてのデータはサーバーから取得されます。
サーバーから直接送られてくるデータをそのまま表示するだけで、この機能を実現できましたListView
。ここで、最初にデータベースに保存してから、ListView
3 つのクラスすべてに対して表示する必要があります。
どんな助けでも大歓迎です。