0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Android Java】HashMapの中でListを使う

Posted at

■概要 01

・ボタン、「北陸」013370「首都圏」013371 に対応したデータを作成。
Screenshot_20241008-085536_YKKAPP - コピー.jpg


private void CreateNounyuuCode_And_Hinbann() {

        GlOpenHelper helper_select = new GlOpenHelper(getApplicationContext());
        SQLiteDatabase db_select = helper_select.getReadableDatabase();

        String[] arr_item = new String[3];

        //---- リストを空にする
        NounyuuSakiCode_And_Hinbann_HashMap.clear();

        int num = 0;
        //------------- スピナー アイテム取得
        try {

            Cursor cursor = db_select.rawQuery("SELECT Master_column_01,Master_column_10,Master_column_06 " +
                    "FROM Master_table WHERE Master_column_01 = '013370' OR " +
                    "Master_column_01 = '013371' ORDER BY Master_column_01;", null);

            int index = 1;
            while (cursor.moveToNext()) {

                //------- 9
                int idx = cursor.getColumnIndex("Master_column_01");
                arr_item[0] = cursor.getString(idx);

                idx = cursor.getColumnIndex("Master_column_10");
                arr_item[1] = cursor.getString(idx);

                idx = cursor.getColumnIndex("Master_column_06");
                arr_item[2] = cursor.getString(idx);

                System.out.println("ハッシュマップテスト:::" + String.valueOf(index) + arr_item[0] + ":" + arr_item[1] + ":" + arr_item[2]);


                // 比較用にハッシュマップに挿入
                if (!NounyuuSakiCode_And_Hinbann_HashMap.containsKey(arr_item[0])) {
                    // キーが存在しない場合は新しいリストを作成
                    NounyuuSakiCode_And_Hinbann_HashMap.put(arr_item[0], new ArrayList<>());
                }
                // リストに品番を追加
                NounyuuSakiCode_And_Hinbann_HashMap.get(arr_item[0]).add(arr_item[1]);
                NounyuuSakiCode_And_Hinbann_HashMap.get(arr_item[0]).add(arr_item[2]);

                num++;
                index++;

            } //-------- while END

        } catch (SQLException e) {
            e.printStackTrace();

        } finally {
            if (db_select != null) {
                db_select.close();
            }
        }

    } // ================== CreateNounyuuCode_And_Hinbann END
    

■ 概要 02

・QR の読取りで、「北陸」013370「首都圏」013371 番号と照合を掛けて、その中で一致したものを、 NounyuuSakiCode_And_Hinbann_HashMap.get(arr_item[0]).add(arr_item[1]);で照合をかけ、一致したデータの、
NounyuuSakiCode_And_Hinbann_HashMap.get(arr_item[0]).add(arr_item[2]);を表示させる。

Screenshot_20241008-085604_YKKAPP.jpg


 private void HanteiHinbanHashMap(HashMap<String, List<String>> map, String NounyuuSakiCode,String HinBan) {

        boolean ErrFlg = false;
        String firstElement = "";
        String secondElement = "";

        for (Map.Entry<String, List<String>> entry : map.entrySet()) {
            String key = entry.getKey();

            // === 納入先コードの指定
            if (key.equals(NounyuuSakiCode)) {
                List<String> values = entry.getValue();

                // 品番が一致するか確認
                for (int i = 0; i < values.size(); i += 2) {
                    String hinban = values.get(i); // 1つ目の品番
                    String suuryou = (i + 1 < values.size()) ? values.get(i + 1) : ""; // 2つ目の数量

                    if (hinban.equals(HinBan)) {
                        // ラベルスキャン表示
                        laveru_scan_text.setText(HinBan);
                        HinbanInit = HinBan;
                        System.out.println("比較OK 含まれている:::key:::" + key + ":::val:::" + hinban);

                        // === 数量(arr_item[2])を出力
                        System.out.println("対応する数量(arr_item[2]): " + suuryou);
                        syukka_suuryou_text.setText(suuryou);

                        ErrFlg = true;
                        break;
                    } else {
                        System.out.println("比較NG 含まれていない:::key:::" + key + ":::品番:::" + hinban);
                        ErrFlg = false;
                    }
                }
            }
        }
        
        // ========= エラー判定 =========
        if(ErrFlg ) {

        } else {
            // エラーで戻す ***(エラー処理クラスでここ用の functionを作った方が良い)
            CustomDialog Erro_dialog_data_ScanData = new CustomDialog(SecondActivity.this);
            Erro_dialog_data_ScanData.showDialog_Error(
                    "品番エラー",
                    "品番の商品がありません。",
                    "閉じる"
            );
        }

    } // =============================== HanteiHinbanHashMap END

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?