My issue is when I am click on list of items on list view then Display Category id as a Toast Message.any one can help to solve this issue. I am appreciating who solve this problem? And how to get dynamic id in url
with only using one url
but different page will be load depends upon id in json parsing
?
JSON
{"data":[{"category_id":"1","category_name":"Restaurants"},
{"category_id":"13","category_name":"Electricals & Electronics"},
{"category_id":"14","category_name":"Computers"},
{"category_id":"157","category_name":"Services(service oriented categories)"}
MainActivity Class
public class MainActivity extends ListActivity {
private static final String url= "http://yoursubshop.com/webservices/categories.php";
public static final String TAG_DATA = "data";
public static final String TAG_CATEGORY_ID = "category_id";
public static final String TAG_CATEGORY_NAME = "category_name";
ListView lv;
TextView tv;
ListAdapter listAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView)findViewById(android.R.id.list);
tv = (TextView)findViewById(R.id.category_id);
new GetList().execute();
}
private class GetList extends AsyncTask<Void,Void,Void>
{
ArrayList<HashMap<String,String>> categorylist;
ProgressDialog pd;
@Override
protected void onPreExecute() {
pd = ProgressDialog.show(MainActivity.this,null, null, true);
pd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
pd.show();
}
@Override
protected Void doInBackground(Void... params) {
WebRequest webRequest = new WebRequest();
String jsonstr = webRequest.makeWebServiceCall(url,WebRequest.GET_REQUEST);
Log.d("Response: ", "> " + jsonstr);
categorylist = parseJSON(jsonstr);
return null;
}
@Override
protected void onPostExecute(Void s) {
super.onPostExecute(s);
pd.dismiss();
listAdapter= new SimpleAdapter(MainActivity.this,categorylist,R.layout.main,
new String[]{TAG_CATEGORY_ID,TAG_CATEGORY_NAME},new int[]{R.id.category_id,R.id.category_name});
setListAdapter(listAdapter);
lv.setAdapter(listAdapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Toast.makeText(getApplicationContext(),, Toast.LENGTH_SHORT).show();
}
});
}
}
private ArrayList<HashMap<String,String>>parseJSON(String jsoon)
{
if (jsoon!=null)
{
ArrayList<HashMap<String,String>> categorylist = new ArrayList<HashMap<String, String>>();
try {
JSONObject jsonObject = new JSONObject(jsoon);
JSONArray category = jsonObject.getJSONArray(TAG_DATA);
for (int i=0;i<category.length();i++)
{
JSONObject c = category.getJSONObject(i);
String id = c.getString(TAG_CATEGORY_ID);
String name = c.getString(TAG_CATEGORY_NAME);
HashMap<String,String> category1 = new HashMap<String,String>();
category1.put(TAG_CATEGORY_ID,id);
category1.put(TAG_CATEGORY_NAME, name);
categorylist.add(category1);
}
return categorylist;
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
else
{
Log.e("Servicehandler","No data recieved from HTTP Request");
return null;
}
}
}
Logcat
05-12 17:03:02.351 1198-1198/? E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.ClassCastException: java.util.HashMap cannot be cast to org.json.JSONObject
at anilkumar.com.yoursubshop.MainActivity$GetList$1.onItemClick(MainActivity.java:82)
at android.widget.AdapterView.performItemClick(AdapterView.java:292)
at android.widget.AbsListView.performItemClick(AbsListView.java:1058)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)
at android.widget.AbsListView.onTouchEvent(AbsListView.java:3180)
at android.view.View.dispatchTouchEvent(View.java:5541)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1951)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1712)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1957)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1726)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1912)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1371)
at android.app.Activity.dispatchTouchEvent(Activity.java:2364)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1860)
at android.view.View.dispatchPointerEvent(View.java:5721)
at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2890)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2466)
at android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:845)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2475)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Shop Activity
public class Shop extends ListActivity {
ListAdapter listAdapter;
String serverUrl = "http://yoursubshop.com/webservices/categories-shop.php?category=";
String TAG_DATA = "data";
String TAG_SHOP_ID = "shop_id";
String TAG_SHOP_NAME = "shop_name";
int i;
String dataa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shop);
new GetList().execute();
}
private class GetList extends AsyncTask<Void, Void, Void> {
ArrayList<HashMap<String, String>> shoplist;
ProgressDialog pd;
@Override
protected void onPreExecute() {
pd = ProgressDialog.show(Shop.this, null, null, true, true);
}
@Override
protected Void doInBackground(Void... params) {
WebRequest webRequest = new WebRequest();
String jsonstr = webRequest.makeWebServiceCall(serverUrl, WebRequest.GET_REQUEST);
Log.d("Response: ", "> " + jsonstr);
shoplist = parseJSON(jsonstr);
return null;
}
@Override
protected void onPostExecute(Void s) {
super.onPostExecute(s);
pd.dismiss();
listAdapter = new SimpleAdapter(Shop.this, shoplist, R.layout.shoplayout,
new String[]{TAG_SHOP_ID, TAG_SHOP_NAME}, new int[]{R.id.shop_id, R.id.shop_name});
setListAdapter(listAdapter);
Intent i = getIntent();
String serverUrlId = i.getStringExtra("data");
serverUrl = serverUrl.concat(serverUrlId);
}
}
private ArrayList<HashMap<String, String>> parseJSON(String curl) {
if (curl != null) {
ArrayList<HashMap<String, String>> categorylist = new ArrayList<HashMap<String, String>>();
try {
JSONObject jsonObject = new JSONObject(curl);
JSONArray category = jsonObject.getJSONArray(TAG_DATA);
for (int i = 0; i < category.length(); i++) {
JSONObject c = category.getJSONObject(i);
String id = c.getString(TAG_SHOP_ID);
String name = c.getString(TAG_SHOP_NAME);
HashMap<String, String> category1 = new HashMap<String, String>();
category1.put(TAG_SHOP_ID, id);
category1.put(TAG_SHOP_NAME, name);
categorylist.add(category1);
}
return categorylist;
} catch (JSONException e) {
e.printStackTrace();
return null;
}
} else {
Log.e("Servicehandler", "No data recieved from HTTP Request");
return null;
}
}
}