2014-04-15 28 views
4

我正在一個android應用程序,我必須解析一個Json數組並將其調整爲自動完成文本視圖。我得到了正確的響應從我的服務器,因爲我是一個新鮮的android和Json解析我沒有得到如何解析該數組適配器,並將其添加到自動完成文本視圖。JSON數組自動完成在android的文本視圖

任何機構都可以告訴我該怎麼做。

迴應如下。

[ 
{ 
city: "bng", 
area: "anagar", 
id: 510000032 
}, 
{ 
city: "bng", 
area: "bnagar", 
id: 510000021 
}, 
{ 
city: "bng", 
area: "cnagar", 
id: 510000037 
} 
] 

我想在自動完成文本視圖中匹配區域。

我在佈局文件中創建了自動完成文本視圖。

我這是怎麼想

public class MainActivity extends Activity { 

    List<String> responseList; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     AutoCompleteTextView auto1 = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); 

     new HttpGetTask().execute(); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_expandable_list_item_2, responseList); 
     auto1.setAdapter(adapter); 
    } 

    private class HttpGetTask extends AsyncTask<Void, Void, String> { 

     String URL = "http://xyz/cities.json?app_id=test"; 
     AndroidHttpClient mClient = AndroidHttpClient.newInstance(""); 

     @Override 
     protected String doInBackground(Void... params) { 
      HttpGet request = new HttpGet(URL); 
      ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
      try { 
       return mClient.execute(request, responseHandler); 
      } catch (ClientProtocolException exception) { 
       exception.printStackTrace(); 
      } catch (IOException exception) { 
       exception.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      try { 
       JSONArray json = new JSONArray(result); 
       Log.v("ResponseCity", result); 

       responseList = new ArrayList<String>(); 

       for (int i = 0; i < json.length(); i++) { 
        final JSONObject e = json.getJSONObject(i); 
        String name = e.getString("area"); 
        responseList.add(name); 

       } 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      if (null != mClient) 
       mClient.close(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 

任何建議都讚賞...

回答

8

添加的響應串入一個List<String>這樣

List<String> responseList = new ArrayList<String>(); 

for (int i = 0; i < json.length(); i++) { 
    final JSONObject e = json.getJSONObject(i); 
    String name = e.getString("area"); 
    responseList.add(name); 
    } 

現在,您可以設置響應列表像這樣AutoCompleteTextView

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_dropdown_item_1line, responseList); 
AutoCompleteTextView textView = (AutoCompleteTextView) 
      findViewById(R.id.autoCompleteTextView1); 
textView.setAdapter(adapter); 
+0

因爲responseList在onPOST等()方法創建。我無法在我的onCreate()方法中訪問它。 – rubin

+0

檢查我的更新代碼。 我沒有在自動完成文本視圖中獲得自動完成的文本。 – rubin

+0

您好,您需要設置後響應列表中onPostExecute適配器添加 – Libin