Use ListFormatter to join strings

Currently in Settings we are using R.string.join_many_items_first, R.string.join_many_items_middle and R.string.join_many_items_last to manually join strings. The join code is messy and the joined string is incorrect in some languages, so we migrate all string join to just use ListFormatter.getInstance().format().

Bug: b/78248791
Test: robotests
Change-Id: I898339978e6e2027587e28994b0280fa46821fd6
This commit is contained in:
jyhshiangwang
2018-04-24 16:05:57 +08:00
parent 7c45f59478
commit 4d015b17b3
12 changed files with 210 additions and 212 deletions

View File

@@ -18,6 +18,9 @@ package com.android.settings.inputmethod;
import android.content.Context;
import android.hardware.input.InputManager;
import android.icu.text.ListFormatter;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
@@ -28,9 +31,9 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;
import java.util.ArrayList;
import java.util.List;
import androidx.preference.Preference;
public class PhysicalKeyboardPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin, LifecycleObserver, OnResume, OnPause,
@@ -100,15 +103,10 @@ public class PhysicalKeyboardPreferenceController extends AbstractPreferenceCont
mPreference.setSummary(R.string.keyboard_disconnected);
return;
}
String summary = null;
final List<String> summaries = new ArrayList<>();
for (HardKeyboardDeviceInfo info : keyboards) {
if (summary == null) {
summary = info.mDeviceName;
} else {
summary = mContext.getString(R.string.join_many_items_middle, summary,
info.mDeviceName);
}
summaries.add(info.mDeviceName);
}
mPreference.setSummary(summary);
mPreference.setSummary(ListFormatter.getInstance().format(summaries));
}
}