我在和双打打打交道,想找一个“双打”的等价物…

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("lat",lat));
nameValuePairs.add(new BasicNameValuePair("lng",lng));

edit//i正在发出http请求,我认为需要将lat值映射到php lat变量,将long映射到php变量。
谢谢!

最佳答案

如果必须使用NameValuePair,有两种可能的解决方案。
您可以将Map转换为ListNameValuePair

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来处理双值:
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);
    }

}

在后一种情况下,可以使用可以直接传递给urlencodedformentity的构造函数的nameValuePair列表:
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new DoubleNameValuePair("lat", 1.0));
parameters.add(new DoubleNameValuePair("lng", 2.0));

09-28 04:54