@Override
  public boolean onContextItemSelected(MenuItem item) {

    // 擷取是哪個位置的Item被select
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    final int ItemPosition = info.position;

    switch (item.getItemId()) {
      case 0:
        CheckChangeNumberState CCNS = new CheckChangeNumberState();
        CCNS.setdata(ItemPosition);
        Thread CheckChangeNumberStateThread = new Thread(CCNS);
        CheckChangeNumberStateThread.start();
        break;
      case 1:
        ImplementChangeNumber ICN = new ImplementChangeNumber();
        ICN.setData(1, ItemPosition);
        Thread ICNThread = new Thread(ICN);
        ICNThread.start();
        break;
      case 2:
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setTitle("換號確認");
        builder.setMessage("你確定要換號?");
        builder.setPositiveButton(
            "確認",
            new AlertDialog.OnClickListener() {

              public void onClick(DialogInterface dialog, int which) {
                ImplementChangeNumber ICN = new ImplementChangeNumber();
                ICN.setData(2, ItemPosition);
                Thread ICNThread = new Thread(ICN);
                ICNThread.start();
              }
            });
        builder.setNegativeButton(
            "取消",
            new AlertDialog.OnClickListener() {

              public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub

              }
            });
        AlertDialog alert = builder.create();
        alert.show();

        break;
      case 3:
        GetMyItem GMI = new GetMyItem(ItemPosition);
        Thread GMIThread = new Thread(GMI);
        GMIThread.start();
        break;
      case 4:
        new DeleteItem().execute(ItemPosition);
        break;
    }

    return super.onContextItemSelected(item);
  }
        public void run() {
          try {
            int delete_list[] = new int[item_list.size()];
            int delete_list_sp = 0;

            for (int i = 0; i < item_list.size(); i++) {
              // 連結到Server做更新
              ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
              nameValuePairs.add(new BasicNameValuePair("store", item_list.get(i).get("store")));
              nameValuePairs.add(new BasicNameValuePair("item", item_list.get(i).get("item")));
              nameValuePairs.add(new BasicNameValuePair("number", item_list.get(i).get("number")));
              nameValuePairs.add(new BasicNameValuePair("CustomID", UserIMEI));
              String result =
                  connect_to_server("/project/mobilephone/update_value.php", nameValuePairs);
              // json decode
              String[] key = {"NowValue", "ItemLife", "ChangeNumberCheck", "ChangeNumber"};
              ArrayList<HashMap<String, String>> temp;
              temp = json_deconde(result, key);

              // 擷取相關資料
              String NowValue = temp.get(0).get("NowValue");
              String ItemLife = temp.get(0).get("ItemLife");
              String ChangeNumber = temp.get(0).get("ChangeNumber");
              String ChangeNumberCheck = temp.get(0).get("ChangeNumberCheck");

              if (!ChangeNumber.equals("-1")) {
                item_list.get(i).put("ChangeNumber", ChangeNumber);
              }

              // 若到號則發出提醒
              if (item_list.get(i).get("number").equals(NowValue)
                  && !item_list.get(i).containsKey("alert")) {
                item_list.get(i).put("alert", "1");
                alert a = new alert();
                a.setData(i, item_list.get(i).get("StoreName"), item_list.get(i).get("ItemName"));
                MainActivity.this.runOnUiThread(a);

                item_list.get(i).put("alert_text", "到號");

                soundPool.play(AlarmWave, 1, 1, 0, 0, (float) 1.5);
                // 播放通知音效
                // 第二、三參數分別為左右喇叭的音量,可用 0 到 1
                // 第四參數固定用 0
                // 第五個參數為播放次數,0 為不重複,-1 為無限重複
                // 第六個參數為播放速度,可用 0.5 到 2
              }

              // 若商品狀態不等於未服務 則刪除此商品
              if (!ItemLife.equals("0")) {
                delete_list[delete_list_sp] = i;
                delete_list_sp++;
              }

              // 沒有要求換號 不做任何事
              if (ChangeNumberCheck.equals("-1")) {
              }
              // 有要求換號 但是還在等待
              else if (ChangeNumberCheck.equals("0")) {
                item_list.get(i).put("ChangeNumberCheck", "0");
              } else if (ChangeNumberCheck.equals("1")) {
                item_list.get(i).put("ChangeNumberCheck", "1");

              }
              // 收到別人的換號要求
              else if (ChangeNumberCheck.equals("2")) {
                // 如果還沒發出過換號提醒 則發出
                if (!item_list.get(i).containsKey("ChangeNumberAlert")) {

                  ChangeNumberAlert CNA = new ChangeNumberAlert();
                  CNA.setDate(item_list.get(i).get("item"), item_list.get(i).get("store"), i);
                  Thread ChangeNumberAlertThread = new Thread(CNA);
                  ChangeNumberAlertThread.start();
                }

                item_list.get(i).put("ChangeNumberAlert", "1");
                item_list.get(i).put("ChangeNumberCheck", "2");
              } else if (ChangeNumberCheck.equals("3")) {
                Message m = main_thread_handler.obtainMessage(7, String.valueOf(i));
                main_thread_handler.sendMessage(m);

                Log.v("debug", ChangeNumber);

                item_list.get(i).put("ChangeNumberCheck", "");
                item_list.get(i).put("ChangeNumber", "");
                ImplementChangeNumber ICN = new ImplementChangeNumber();
                ICN.setData(3, i);
                Thread ICNThread = new Thread(ICN);
                ICNThread.start();
              } else {
              }

              // 更新NowValue
              item_list.get(i).put("Now_Value", NowValue);
            }

            for (int i = delete_list_sp - 1; i >= 0; i--) {

              int delete_item_num = delete_list[i];
              /*
              	ArrayList<NameValuePair> nameValuePairs =new ArrayList<NameValuePair>();
              nameValuePairs.add(new BasicNameValuePair("Store",item_list.get(delete_item_num).get("store")));
              nameValuePairs.add(new BasicNameValuePair("Item",item_list.get(delete_item_num).get("item")));
              nameValuePairs.add(new BasicNameValuePair("Number",item_list.get(delete_item_num).get("number")));
              nameValuePairs.add(new BasicNameValuePair("UserIMEI",UserIMEI));
              connect_to_server("/project/mobilephone/del_item.php",nameValuePairs);
              */
              item_list.remove(delete_item_num);
            }

            delete_list_sp = 0;

            Message m = main_thread_handler.obtainMessage(2);
            main_thread_handler.sendMessage(m);

            threadhandler.removeCallbacks(update_value);
            if (item_list.size() != 0) threadhandler.postDelayed(update_value, 3000);

          } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
          } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
          } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
          }
        }