-2

Androidのコーディングは初めてです。私はプロジェクトに放り込まれ、以下のコードは機能しますが、実際には理解できず、学習の助けにはなりません。誰かが各ステージが何をしているかをコードにコメントしてくれますか?

SharedPreferences myPrefs = this.getSharedPreferences("FileName", MODE_PRIVATE);
        TreeMap<String, ?> keys = new TreeMap<String, Object>(myPrefs.getAll());
        for (Map.Entry<String, ?> entry : keys.entrySet()) {
            Log.i("map values", entry.getKey());

        }


      List<Pair<Object, String>> sortedByValue = new LinkedList<Pair<Object,String>>();
        for (Map.Entry<String, ?> entry : keys.entrySet()) {
            Pair<Object, String> e = new Pair<Object, String>(entry.getValue(), entry.getKey());
            sortedByValue.add(e);
        }


     // Pair doesn't have a comparator, so you're going to need to write one.
        Collections.sort(sortedByValue, new Comparator<Pair<Object, String>>() {
            public int compare(Pair<Object, String> lhs, Pair<Object, String> rhs) {

                String sls = String.valueOf(lhs.first);
                String srs = String.valueOf(rhs.first);
                int res = sls.compareTo(srs);
                // Sort on value first, key second
                return res == 0 ? lhs.second.compareTo(rhs.second) : res;
            }
        });

        for (Pair<Object, String> pair : sortedByValue) {
            Log.i("map values", pair.first + "/" + pair.second);
        }


      Collection<?> stringArrayList = keys.values();
      final CharSequence[] prefsCharSequence = stringArrayList.toArray(new CharSequence[stringArrayList.size()]);
4

1 に答える 1

2
SharedPreferences myPrefs = this.getSharedPreferences("FileName", MODE_PRIVATE);
    TreeMap<String, ?> keys = new TreeMap<String, Object>(myPrefs.getAll());
    for (Map.Entry<String, ?> entry : keys.entrySet()) {
        Log.i("map values", entry.getKey());

    }

すべてのキーと値のペアを共有設定ファイルに記録します。

List<Pair<Object, String>> sortedByValue = new LinkedList<Pair<Object,String>>();
    for (Map.Entry<String, ?> entry : keys.entrySet()) {
        Pair<Object, String> e = new Pair<Object, String>(entry.getValue(), entry.getKey());
        sortedByValue.add(e);
    }

すべての設定を含むマップをソート用のリストに変換する

Collections.sort(sortedByValue, new Comparator<Pair<Object, String>>() {
        public int compare(Pair<Object, String> lhs, Pair<Object, String> rhs) {

            String sls = String.valueOf(lhs.first);
            String srs = String.valueOf(rhs.first);
            int res = sls.compareTo(srs);
            // Sort on value first, key second
            return res == 0 ? lhs.second.compareTo(rhs.second) : res;
        }
    });

ペアのリストをソートするためのカスタム コンパレータ。値を比較します。それらが等しい場合、2 番目の値を比較します。

for (Pair<Object, String> pair : sortedByValue) {
        Log.i("map values", pair.first + "/" + pair.second);
    }

ソートされた設定を印刷します。

  Collection<?> stringArrayList = keys.values();
  final CharSequence[] prefsCharSequence = stringArrayList.toArray(new CharSequence[stringArrayList.size()]);

SharedPreferences ファイルのキーを Collection に変換し、次に String のリストに変換します。

于 2012-10-10T01:51:47.207 に答える