在Json中使用Listview的问题

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;
        }
    }
}

onCreate() to define listview click Listener

 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {

            Toast.makeText(getApplicationContext(),, Toast.LENGTH_SHORT).show();
        }
    });