[英]How to compare input values from user with values in array
我想使用現有的數組元素作為開關案例,而不是給開關案例提供恆定的字符串值
我曾經顯示過資源字符串數組中的值,用戶必須從這些顯示值中進行選擇,現在我想比較保存在共享首選項中的輸入值和我保存在數組資源中的值,我寫了一些東西這樣,但沒有用
private static String activity;
private static int result;
activity = SharedPrefUtils.getActivityLevel(context);
String[] activities
= context.getResources().getStringArray(R.array.activity);
switch (activity){
//something like getting values from array
case activities[0]:
result = 0;
break;
case activities[1]:
result = 200;
break;
case activities[2]:
result = 300;
break;
}
return result;
無需遍歷array
,您可以將其轉換為List
並使用indexOf
獲取元素索引,例如:
String[] activities = context.getResources().getStringArray(R.array.activity);
List<String> activitiesList = Arrays.asList(activities);
int index = activitiesList.indexOf(activity);
這是javadoc所說的:
返回指定元素在此列表中首次出現的索引;如果此列表不包含該元素,則返回-1。 更正式地,返回最低索引i,使其(o == null?get(i)== null:o.equals(get(i))),或者如果沒有這樣的索引,則返回-1。
因此,您可以將邏輯基於index
值。
另一種方法是使用Map<Integer, String>
並根據用戶選擇的值將Integer
鍵傳遞給方法。
首先,請確保您的“活動”字符串和“活動”數組項正在返回一些值。 嘗試打印這些值以進行檢查。 如果所有這些都返回您的值,則可以通過以下方式比較String:
if (activity.equalsIgnoreCase(activities[0]){
Log.e("Matched" , "Yeah, it matched");
}
您可以通過這種方式一一匹配所有的String值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.