我正在处理双打,并寻找相当于“双倍”的......
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("lat",lat));
nameValuePairs.add(new BasicNameValuePair("lng",lng));
编辑//我正在发出HTTP请求,我认为需要将lat值映射到php lat变量,将long映射到php变量。
谢谢!
答案 0 :(得分:3)
如果必须使用NameValuePair
,则有两种可能的解决方案。
您可以将Map
转换为List
NameValuePair
:
List<NameValuePair> convertParameters(Map<String, Double> parameters) {
List<NameValuePair> result = new ArrayList<NameValuePair>();
for (Entry<String, Double> entry : parameters.entrySet()) {
result.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));
}
return result;
}
或者您可以实现一个新的NameValuePair来处理Double值:
public class DoubleNameValuePair implements NameValuePair {
String name;
double value;
public DoubleNameValuePair(String name, double value) {
this.name = name;
this.value = value;
}
@Override
public String getName() {
return name;
}
@Override
public String getValue() {
return Double.toString(value);
}
}
在后一种情况下,您可以使用NameValuePair的List,它可以直接传递给UrlEncodedFormEntity的构造函数:
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new DoubleNameValuePair("lat", 1.0));
parameters.add(new DoubleNameValuePair("lng", 2.0));
答案 1 :(得分:1)
AbstractMap.SimpleEntry
是表示通用元组的JDK类。不幸的是,它是一个内部类,使得它的使用非常非常冗长(特别是一旦你使用了类型参数)。此外,使用double
值需要它们(可能使用自动装箱),这会增加额外开销。
您可能想要编写自己的StringDoublePair
课程 - 这并不困难。
答案 2 :(得分:1)
为什么不使用地图?
Map<String, Double> nameValuePairs = new HashMap<String, Double>();
nameValuePairs.put("lat", lat);
nameValuePairs.put("lng", lng);
答案 3 :(得分:1)
喜欢这样吗?
ArrayList<double[]> latLons = new ArrayList<double[]>();
latlons.add(new double[]{60.0, 20.0});
答案 4 :(得分:0)
我假设你在谈论Apache HttpClient中使用的NameValuePair。值必须是字符串。您必须将其转换为String。
这就是我的工作,
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("lat",""+lat));
nameValuePairs.add(new BasicNameValuePair("lng",""+lng));