我正在尝试进行天气应用。 我是android上的新手。我的目标是在此应用上查找不同位置的天气。 例如,当我选择“ 00000.1.17.352”时,它将给我Adana,但我不能更改位置,因为它取决于代码。 我想根据名称输入代码。 这是我的JSONparser。

“名称”和“代码”的JSON值

如果我将名称写到editview,我想获取其代码。 这是我的布局和Java代码。

    <EditView
        android:id="@+id/city_field"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/white"

        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />


    <TextView
        android:id="@+id/code"
        android:textColor="@color/white"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="70sp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="85dp"/>

在那里,我正在获取城市名称和城市代码。

public class CityFetch  {

private String urlString = null;
public volatile boolean parsingComplete = true;
private String cityCode = "cityCode";
private String cityName = "cityName";
public CityFetch(String url){
    this.urlString = url;
}

 public String getCityCode(){

    return cityCode;
}

public String getCityName(){

    return cityName;
}


@SuppressLint("NewApi")
public void readAndParseJSON(String in) {
    try {
        JSONObject reader = new JSONObject(in);


        cityCode= reader.getJSONObject("data")
                .getJSONArray("results").getJSONObject(0)
                .getJSONArray("cities").getJSONObject(0)
                .getString("code");

        cityName= reader.getJSONObject("data")
                .getJSONArray("results").getJSONObject(0)
                .getJSONArray("cities").getJSONObject(0)
                .getString("name");


        parsingComplete = false;



    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
public void fetchJSON(){
    Thread thread = new Thread(new Runnable(){
        @Override
        public void run() {
            try {
                URL url = new URL(urlString);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setReadTimeout(10000 /* milliseconds */);
                conn.setConnectTimeout(15000 /* milliseconds */);
                conn.setRequestMethod("GET");
                conn.setDoInput(true);
                // Starts the query
                conn.connect();
                InputStream stream = conn.getInputStream();

                String data = convertStreamToString(stream);

                readAndParseJSON(data);
                stream.close();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

    thread.start();
}
static String convertStreamToString(java.io.InputStream is) {
    java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
    return s.hasNext() ? s.next() : "";
}
}

那么,当我在editview字段中写入名称时,如何访问“代码”? 可能吗?

感谢您的回答。

===============>>#1 票数:0

最简单的解决方案-遍历所有城市并进行比较,直到找到您要寻找的城市。

JSONArray cities = reader.getJSONObject("data")
            .getJSONArray("results").getJSONObject(0)
            .getJSONArray("cities");

for (int i=0; i<cities.length(); i++) {
    JSONObject jCity = cities.getJSONObject(i);
    String name = jCity.getString("name");
    if (name.equals("Adana Bolge")) {  // << replace with city you wish to search
        String code = jCity.getString("code");
        return code;
    }
}
return null;  // or throw exception - no such city found

  ask by serdanarik translate from so

未解决问题?本站智能推荐: