void remove_single_item(Long itemid) {
    String Query = "SELECT type,data FROM playlist WHERE playorder=" + itemid;
    JSONArray jArray = activity.ld.runQuery("lyricDb", Query);
    if (jArray == null) {
      return;
    }
    try {
      JSONObject results = jArray.getJSONObject(0);
      if ((results.getString("type").equals("play")) || (results.getString("type").equals("sub"))) {
        Query = "SELECT playorder FROM playlist WHERE playlist=" + results.getLong("data");
        JSONArray pArray = activity.ld.runQuery("lyricDb", Query);
        if (pArray != null) {
          for (int i = 0; i < pArray.length(); i++) {
            JSONObject item = pArray.getJSONObject(i);
            remove_single_item(item.getLong("playorder"));
          }
        }
        Query = "DELETE FROM playlist WHERE playlist=" + results.getLong("data");
        activity.ld.runQuery("lyricDb", Query);
        Query = "DELETE FROM playlists WHERE id=" + results.getLong("data");
        activity.ld.runQuery("lyricDb", Query);
      }
      Query = "DELETE FROM playlist WHERE playorder=" + itemid;
      activity.ld.runQuery("lyricDb", Query);
      Query = "DELETE FROM associations WHERE playlist=" + itemid;
      activity.ld.runQuery("lyricDb", Query);

    } catch (JSONException e) {
      activity.logError("Error parsing data " + e.toString());
    }
  }
  void add_playlist() {
    Log.i(TAG, "add_playlist:" + this_playlist);

    if (activity.hosts == null) {
      load_demo_playlist();
      return;
    }
    if (this_playlist <= 0) {
      return;
    }

    String Query;
    Query =
        "SELECT playlist FROM playlist WHERE data="
            + this_playlist
            + " AND (type='play' OR type='sub')";
    parent_playlist = (long) activity.ld.runQuery_int("lyricDb", Query, "playlist");

    Query =
        "SELECT playorder, type, data FROM playlist"
            + " WHERE playlist="
            + this_playlist
            + " ORDER BY playorder";
    JSONArray jArray = activity.ld.runQuery("lyricDb", Query);
    if (jArray == null) {
      return;
    }
    for (int i = 0; i < jArray.length(); i++) {
      try {
        JSONObject results = jArray.getJSONObject(i);
        if (results.getString("type").equals("play") || results.getString("type").equals("sub")) {
          String Query2 = "SELECT * FROM playlists WHERE id=" + results.getString("data");
          JSONArray pArray = activity.ld.runQuery("lyricDb", Query2);
          if (pArray != null && pArray.length() > 0) {
            adapter.add(
                results.getLong("playorder"),
                "",
                pArray.getJSONObject(0).getString("title"),
                results.getString("type"),
                results.getLong("data"));
            Log.i(
                TAG,
                "Add list:"
                    + results.getLong("data")
                    + "-"
                    + pArray.getJSONObject(0).getString("title"));
          }
        } else if (results.getString("type").equals("song")) {
          String Query2 =
              "SELECT pagetitle, lyrics FROM page WHERE pageid=" + results.getString("data");
          JSONArray pArray = activity.ld.runQuery("lyricDb", Query2);
          if (pArray != null && pArray.length() > 0) {
            adapter.add(
                results.getLong("playorder"),
                pArray.getJSONObject(0).getString("pagetitle"),
                pArray.getJSONObject(0).getString("lyrics"),
                results.getString("type"),
                (long) 0);
          }
        } else if (results.getString("type").equals("vers")) {
          adapter.add(
              results.getLong("playorder"),
              "",
              "Verses " + results.getString("data"),
              results.getString("type"),
              (long) 0);
        } else if (results.getString("type").equals("file")) {
          String filename = results.getString("data");
          if (filename.startsWith("/var/tmp/lyricue-")) {
            filename =
                filename
                    .substring(filename.lastIndexOf("/") + 1, filename.length() - 4)
                    .replace("_", " ");
            adapter.add(
                results.getLong("playorder"),
                "Presentation: " + filename,
                "",
                results.getString("type"),
                (long) 0);
          } else {
            adapter.add(
                results.getLong("playorder"),
                "File: "
                    + results
                        .getString("data")
                        .substring(results.getString("data").lastIndexOf("/") + 1),
                "",
                results.getString("type"),
                (long) 0);
          }
        } else if (results.getString("type").equals("imag")) {
          String[] imageItem = results.getString("data").split(";", 2);
          switch (imageItem[0]) {
            case "db":
              String Query2 = "SELECT description FROM media WHERE id=" + imageItem[1];
              JSONArray pArray = activity.ld.runQuery("mediaDb", Query2);
              if (pArray != null && pArray.length() > 0) {
                String desc = pArray.getJSONObject(0).getString("description");
                adapter.add(
                    results.getLong("playorder"),
                    "Image: " + desc,
                    "",
                    results.getString("type"),
                    (long) 0);
              } else {
                adapter.add(
                    results.getLong("playorder"),
                    "Image",
                    "unknown",
                    results.getString("type"),
                    (long) 0);
              }
              break;
            case "dir":
              adapter.add(
                  results.getLong("playorder"),
                  "Image: " + imageItem[1].substring(imageItem[1].lastIndexOf("/") + 1),
                  "",
                  results.getString("type"),
                  (long) 0);
              break;
            default:
              adapter.add(
                  results.getLong("playorder"),
                  "Image: " + imageItem[1],
                  "",
                  results.getString("type"),
                  (long) 0);
              break;
          }
        } else {
          adapter.add(
              results.getLong("playorder"),
              "Unknown item type",
              "",
              results.getString("type"),
              (long) 0);
        }
      } catch (JSONException e) {
        activity.logError("Error parsing data " + e.toString());
        return;
      }
    }
  }