// Path: app/src/main/java/com/antest1/kcanotify/KcaApiData.java
// public static JsonObject getExpeditionInfo(int mission_no, String locale) {
//     JsonObject data = null;
//     int mission_key = mission_no;
//     String key = String.valueOf(mission_key);
//     if (!kcExpeditionData.has(key)) {
//         if (mission_no % 2 == 1) key = "203";
//         else key = "204";
//     }
//     JsonObject rawdata = kcExpeditionData.getAsJsonObject(key);
//     data = new JsonParser().parse(rawdata.toString()).getAsJsonObject();
//     JsonObject name = data.getAsJsonObject("name");
//     if (name.has(locale)) {
//         data.addProperty("name", name.get(locale).getAsString());
//     } else {
//         data.addProperty("name", name.get("en").getAsString());
//     }
//     return data;
// }
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaApiData.java
// public static JsonObject getQuestTrackInfo(String id) {
//     JsonObject kcQuestTrackData = helper.getJsonObjectValue(DB_KEY_QUESTTRACK);
//     if (kcQuestTrackData.has(id)) {
//         return kcQuestTrackData.getAsJsonObject(id);
//     } else {
//         return null;
//     }
// }
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaApiData.java
// public static String getShipTypeAbbr(int idx) {
//     if (kcStypeData != null && idx < kcStypeData.size()) {
//         return kcStypeData.get(idx).getAsString();
//     } else {
//         return "";
//     }
// }
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaApiData.java
// public static boolean isQuestTrackable(String id) {
//     JsonObject kcQuestTrackData = helper.getJsonObjectValue(DB_KEY_QUESTTRACK);
//     int id_int = Integer.parseInt(id);
//     return kcQuestTrackData.has(id);
// }
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaApiData.java
// public static JsonObject kcQuestInfoData = new JsonObject();
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaUtils.java
// public static int getId(String resourceName, Class<?> c) {
//     try {
//         Field idField = c.getDeclaredField(resourceName);
//         return idField.getInt(idField);
//     } catch (Exception e) {
//         throw new RuntimeException("No resource ID found for: "
//                 + resourceName + " / " + c, e);
//     }
// }
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaUtils.java
// public static int getIdWithFallback(String resourceName, String fallbackResourceName, Class<?> c) {
//     try {
//         Field idField = c.getDeclaredField(resourceName);
//         return idField.getInt(idField);
//     } catch (Exception e) {
//         return getId(fallbackResourceName, c);
//     }
// }
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaUtils.java
// public static String joinStr(List<String> list, String delim) {
//     String resultStr = "";
//     if (list.size() > 0) {
//         int i;
//         for (i = 0; i < list.size() - 1; i++) {
//             resultStr = resultStr.concat(list.get(i));
//             resultStr = resultStr.concat(delim);
//         }
//         resultStr = resultStr.concat(list.get(i));
//     }
//     return resultStr;
// }


import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static com.antest1.kcanotify.KcaApiData.getExpeditionInfo;
import static com.antest1.kcanotify.KcaApiData.getQuestTrackInfo;
import static com.antest1.kcanotify.KcaApiData.getShipTypeAbbr;
import static com.antest1.kcanotify.KcaApiData.isQuestTrackable;
import static com.antest1.kcanotify.KcaApiData.kcQuestInfoData;
import static com.antest1.kcanotify.KcaUtils.getId;
import static com.antest1.kcanotify.KcaUtils.getIdWithFallback;
import static com.antest1.kcanotify.KcaUtils.joinStr;
        TextView quest_desc;
        ImageView quest_desc_full;
    }

    public void setListViewItemList(JsonArray ship_list, int filter) {
        Type listType = new TypeToken<List<JsonObject>>() {}.getType();
        listViewItemList = new Gson().fromJson(ship_list, listType);
        if (listViewItemList.size() > 0) {
            JsonObject test = listViewItemList.get(0);
            if (!test.has("api_label_type")) listViewItemList.clear();
        }
        if (filter != -1) {
            listViewItemList = new ArrayList<>(Collections2.filter(listViewItemList, new Predicate<JsonObject>() {
                @Override
                public boolean apply(JsonObject input) {
                    int category = input.get("api_category").getAsInt();
                    if (filter == 7) {
                        return (category == 1 || category == 5 || category == 7);
                    } else if (filter == 2) {
                        return (category == 2 || category == 8 || category == 9);
                    } else if (filter == 6) {
                        return (category == 6 || category == 11);
                    } else {
                        return (category == filter);
                    }
                }
            }));
        }
        if (listViewItemList.size() > 5 && listViewItemList.size() % 5 != 0) {
            int dummyCount = 5 - listViewItemList.size() % 5;
// Path: app/src/main/java/com/antest1/kcanotify/KcaApiData.java
// public static JsonObject getExpeditionInfo(int mission_no, String locale) {
//     JsonObject data = null;
//     int mission_key = mission_no;
//     String key = String.valueOf(mission_key);
//     if (!kcExpeditionData.has(key)) {
//         if (mission_no % 2 == 1) key = "203";
//         else key = "204";
//     }
//     JsonObject rawdata = kcExpeditionData.getAsJsonObject(key);
//     data = new JsonParser().parse(rawdata.toString()).getAsJsonObject();
//     JsonObject name = data.getAsJsonObject("name");
//     if (name.has(locale)) {
//         data.addProperty("name", name.get(locale).getAsString());
//     } else {
//         data.addProperty("name", name.get("en").getAsString());
//     }
//     return data;
// }
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaApiData.java
// public static JsonObject getQuestTrackInfo(String id) {
//     JsonObject kcQuestTrackData = helper.getJsonObjectValue(DB_KEY_QUESTTRACK);
//     if (kcQuestTrackData.has(id)) {
//         return kcQuestTrackData.getAsJsonObject(id);
//     } else {
//         return null;
//     }
// }
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaApiData.java
// public static String getShipTypeAbbr(int idx) {
//     if (kcStypeData != null && idx < kcStypeData.size()) {
//         return kcStypeData.get(idx).getAsString();
//     } else {
//         return "";
//     }
// }
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaApiData.java
// public static boolean isQuestTrackable(String id) {
//     JsonObject kcQuestTrackData = helper.getJsonObjectValue(DB_KEY_QUESTTRACK);
//     int id_int = Integer.parseInt(id);
//     return kcQuestTrackData.has(id);
// }
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaApiData.java
// public static JsonObject kcQuestInfoData = new JsonObject();
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaUtils.java
// public static int getId(String resourceName, Class<?> c) {
//     try {
//         Field idField = c.getDeclaredField(resourceName);
//         return idField.getInt(idField);
//     } catch (Exception e) {
//         throw new RuntimeException("No resource ID found for: "
//                 + resourceName + " / " + c, e);
//     }
// }
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaUtils.java
// public static int getIdWithFallback(String resourceName, String fallbackResourceName, Class<?> c) {
//     try {
//         Field idField = c.getDeclaredField(resourceName);
//         return idField.getInt(idField);
//     } catch (Exception e) {
//         return getId(fallbackResourceName, c);
//     }
// }
// 
// Path: app/src/main/java/com/antest1/kcanotify/KcaUtils.java
// public static String joinStr(List<String> list, String delim) {
//     String resultStr = "";
//     if (list.size() > 0) {
//         int i;
//         for (i = 0; i < list.size() - 1; i++) {
//             resultStr = resultStr.concat(list.get(i));
//             resultStr = resultStr.concat(delim);
//         }
//         resultStr = resultStr.concat(list.get(i));
//     }
//     return resultStr;
// }


// Path: app/src/main/java/com/antest1/kcanotify/KcaQuestListAdpater.java
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static com.antest1.kcanotify.KcaApiData.getExpeditionInfo;
import static com.antest1.kcanotify.KcaApiData.getQuestTrackInfo;
import static com.antest1.kcanotify.KcaApiData.getShipTypeAbbr;
import static com.antest1.kcanotify.KcaApiData.isQuestTrackable;
import static com.antest1.kcanotify.KcaApiData.kcQuestInfoData;
import static com.antest1.kcanotify.KcaUtils.getId;
import static com.antest1.kcanotify.KcaUtils.getIdWithFallback;
import static com.antest1.kcanotify.KcaUtils.joinStr;

        TextView quest_desc;
        ImageView quest_desc_full;
    }

    public void setListViewItemList(JsonArray ship_list, int filter) {
        Type listType = new TypeToken<List<JsonObject>>() {}.getType();
        listViewItemList = new Gson().fromJson(ship_list, listType);
        if (listViewItemList.size() > 0) {
            JsonObject test = listViewItemList.get(0);
            if (!test.has("api_label_type")) listViewItemList.clear();
        }
        if (filter != -1) {
            listViewItemList = new ArrayList<>(Collections2.filter(listViewItemList, new Predicate<JsonObject>() {
                @Override
                public boolean apply(JsonObject input) {
                    int category = input.get("api_category").getAsInt();
                    if (filter == 7) {
                        return (category == 1 || category == 5 || category == 7);
                    } else if (filter == 2) {
                        return (category == 2 || category == 8 || category == 9);
                    } else if (filter == 6) {
                        return (category == 6 || category == 11);
                    } else {
                        return (category == filter);
                    }
                }
            }));
        }
        if (listViewItemList.size() > 5 && listViewItemList.size() % 5 != 0) {
            int dummyCount = 5 - listViewItemList.size() % 5;
            for (int i = 0 ; i < dummyCount; i++) {