简体   繁体   中英

android display json object to listview

This is the code I'm working on:

   private final static String SERVICE_URI = "http://restwebservice.com/test/Service.svc";

StringEntity entity;
String var;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    callWebService();

    Button btn = (Button) findViewById (R.id.button1);

    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent i = new Intent(MainActivity.this, Test.class);
            startActivity(i);
        }
    });


}

public void callWebService() {

    try {

           // make web service connection
           HttpPost request = new HttpPost(SERVICE_URI + "/TestApplication");
           request.setHeader("Accept", "application/json");
           request.setHeader("Content-type", "application/json");
           // Build JSON string
           JSONStringer TestApp = new JSONStringer().object().key("id")
                        .value("1").key("name").value("manish").key("email")
                        .value("androidhub4you@gmail.com").key("country")
                        .value("india").endObject();
           entity = new StringEntity(TestApp.toString());
           var = EntityUtils.toString(entity);

           Log.d("****Parameter Input****", "Testing:" + TestApp);
           request.setEntity(entity);
           // Send request to WCF service
           DefaultHttpClient httpClient = new DefaultHttpClient();
           HttpResponse response = httpClient.execute(request);

           Log.d("WebInvoke", "Saving: " + response.getStatusLine().toString());
           // Get the status of web service
           BufferedReader rd = new BufferedReader(new InputStreamReader(
                        response.getEntity().getContent()));
           // print status in log
           String line = "";
           while ((line = rd.readLine()) != null) {
                 Log.d("****Status Line***", "Webservice: " + line);
           }




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

  }

I want to display them on a listview. Do you have any tutorials to get me started with? I'm new to web services. Thanks.

One of the most popular tutirials on list views which may help you:

- Ravi's blog

Steps to follow after parsing your json:

 1. Map your json objects to pojo.
 2. Store your pojo in an array list if many are there.
 3. Create a list view with a custom adapter.
 4. update your listview with answer from the pojo's that you have mapped with
    notifyDatasetChanged

You can use jackson library to parse json with one line of code.

 //1. Convert Java object to JSON format
 ObjectMapper mapper = new ObjectMapper();
 mapper.writeValue(new File("c:\\user.json"), user);

 //2. Convert JSON to Java object
 ObjectMapper mapper = new ObjectMapper();
 User user = mapper.readValue(new File("c:\\user.json"), User.class);

(follow this link for more on object mapping tutorial)

this is what i did to generate listview from my json response, basically i wrote values from my jon response to adapter and set it to my list view

try{
        jArray = new JSONArray(result);
        for(int i=0;i<jArray.length();i++){
                json_data = jArray.getJSONObject(i);

                Log.i("log_tag","dealid: "+json_data.getString("deal_id")+
                        ", hotel name: "+json_data.getString("hotel_name")+
                        ", location: "+json_data.getString("location")+
                        ", website: "+json_data.getString("website")
                );

        }

        json_data=new JSONObject();
        String[] data=new String[jArray.length()];
        planetList = new ArrayList<String>();
            for(int i=0;i<jArray.length();i++)
            {
                json_data= jArray.getJSONObject(i);
                data[i]=json_data.getString("deal_id");
                Log.i("log_tag", "string "+data[i]);
                planetList.addAll( Arrays.asList("Deal "+ (i+1)));  
                listAdapter = new ArrayAdapter<String>(this, R.layout.listrow, planetList);
                runOnUiThread(new Runnable() {
                    public void run() {
                        list.setAdapter(listAdapter);
                    }
                });
             }
            list.setOnItemClickListener(new OnItemClickListener() {  //where to put this piece of code???

                public void onItemClick(AdapterView<?> arg0, View arg1,
                        final int arg2, long arg3) {

                Intent intent = new Intent(context,Finaldeal.class);  
                intent.putExtra("deal", json_data.toString());
                startActivity(intent);                                     
                }

            }); 

}
catch(JSONException e){
        Log.e("log_tag", "Error parsing data "+e.toString());
}

you can also refer to question i asked here

passing JSON object to another activity on list item click

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM