我需要将数据分成两部分,例如我得到的是用户数据以及手机号码所以数据就像Arif || 44444~Balin || 33333~Cavin || 55555~Den || 66666~所以我可以将其拆分为
//Splitting the values
String[] parts = stat.split("~");
final String part1 = parts[0];
final String part2 = parts[1];
但是这将获得像Arif || 44444,Balin || 33333,Cavin || 55555,Den || 66666
的数据我需要单独存储包括名称和语音的数据,我需要在微调器中显示名称,因此如果用户从微调器中选择名称,我需要获取其相应的手机号码。我做了选择名称的代码..但对于相应的号码,我没有得到,如果有人知道请帮助。
ref = String.valueOf(refdetails.getString("ref", "not found"));
List<String> spinnerArray = new ArrayList<String>();
//spinnerArray.add(ref);
spinnerArray = Arrays.asList(ref.split("~"));
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, spinnerArray);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);
答案 0 :(得分:1)
类型1:使用正则表达式。
它分裂了非单词字符。
份[I] .split( “[\ W] {2}”)
String stat = "Arif||44444~Balin||33333~Cavin||55555~Den||66666~";
String[] parts = stat.split("~");
List<String> names = new ArrayList<>();
List<String> numbers = new ArrayList<>();
for(int i = 0; i < parts.length; i++) {
names.add(parts[i].split("[\\W]{2}")[0]);
numbers.add(parts[i].split("[\\W]{2}")[1]);
}
类型2:使用子字符串
String stat = "Arif||44444~Balin||33333~Cavin||55555~Den||66666~";
String[] parts = stat.split("~");
List<String> names = new ArrayList<>();
List<String> numbers = new ArrayList<>();
for(int i = 0; i < parts.length; i++) {
int found = parts[i].indexOf("||");
names.add(parts[i].substring(0,found));
numbers.add(parts[i].substring(found+2,parts[i].length()));
}
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int posion, long id) {
//here you can get the position (local argument position) of corresponding numbers to the names
String name = names.get(position);
String number = number.get(position);
}
@Override public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
答案 1 :(得分:0)
String[] parts = stat.split("~");
final String part1 = parts[0];
final String part2 = parts[1];
这会将字符串拆分为数组{ "Arif||44444", "Balin||33333", "Cavin||55555", "Den||66666" }
要获取每个名称和数量,您可以进行更多拆分:
List<String> names = new ArrayList<>();
List<String> numbers = new ArrayList<>();
for(int i = 0; i < parts.length; i++) {
names.append(parts[i].split("||")[0]);
numbers.append(parts[i].split("||")[1]);
}
您现在将分别有2个列表,{ "Arif", "Balin", "Cavin", "Den" }
和{ "44444", "33333", "55555", "66666" }
。
答案 2 :(得分:0)
首先为微调器准备值并将所有数据添加到散列图
String[] parts = stat.split("~");
String[] sArray = new String[parts.length];
HashMap<String,String> sMap = new HashMap<String, String>();
int i=0;
for (String s : parts)
{
sMap.put(s.split("|")[0],s.split("|")[1]);
sArray[i] = s.split("|")[0];
i++;
}
接下来设置微调器的值,就像对代码一样。
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, sArray);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);
然后,如果你想获取微调器的值访问你的hashmap
String name = spinner.getSelectedItem().toString();
String id = sMap.get(name);