Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSON array to auto complete text view in android

i am working on an android app where i have to parse a Json array and adapt it to an auto complete text view. I am getting correct response from my server, since i am a fresher to android and Json parsing i am not getting how to parse that json array to array adapter and add it to auto complete text view.

Can any body suggest me how to do it..?

Response as follows.

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

i want area to be matched in my auto complete text view.

I created auto complete text view in my layout file.

This is how i am trying

    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;
    }
}

Any suggestions are appreciated...

like image 937
rubin Avatar asked Dec 15 '22 23:12

rubin


1 Answers

Add the response string into a List<String> like this

 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);
  }

Now, you can set the response list to AutoCompleteTextView like this

 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);
like image 74
Libin Avatar answered Dec 27 '22 07:12

Libin