Loshi
Loshi

Reputation: 221

android how to get the json array to the listview

http://hopscriber.com/log.php

this [{"uname":"faith"},{"uname":"losh"},{"uname":"loshi"},{"uname":"test"}] 

i want to get it to the list view but i dont know how to do so, and the methods in tutorials are not clear to me.

hope some one could help me out...

thank you

php that give the above outcome

<?php
include "db_config.php";

$sql=mysql_query("SELECT`uname` FROM `user`");
 while($row=mysql_fetch_assoc($sql)) $output[]=$row;
 print(json_encode($output));
 mysql_close();
?>

activity

THis is the corrected one but the list view shows only pwd column.... why is that?

    package hopscriber.com;


public class Menu extends Activity {

    TextView result;
    Intent intent;

    // JSON Node names
    private static final String TAG_Name = null;
    private static final String TAG_Pass = null;

    // contacts JSONArray
    JSONArray contacts = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);

        // Name of the User
        result = (TextView) findViewById(R.id.result);
        intent = getIntent();
        String Naming = intent.getStringExtra("name1");
        result.setText("Hey " + Naming);

        ListView list = (ListView) findViewById(R.id.list);

        try {
            HttpParams params = new BasicHttpParams();
            HttpConnectionParams.setSoTimeout(params, 0);
            HttpClient httpClient = new DefaultHttpClient(params);

            // prepare the HTTP GET call
            HttpGet httpget = new HttpGet("http://hopscriber.com/log.php");
            // get the response entity
            HttpEntity entity = httpClient.execute(httpget).getEntity();

            if (entity != null) {
                // get the response content as a string
                String response = EntityUtils.toString(entity);
                // consume the entity
                entity.consumeContent();

                // When HttpClient instance is no longer needed, shut down the
                // connection manager to ensure immediate deallocation of all
                // system resources
                httpClient.getConnectionManager().shutdown();

                // return the JSON response
                ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();

                JSONArray jsonArray = new JSONArray(response.trim());
                if (jsonArray != null) {
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject object = (JSONObject) jsonArray.get(i);

                        HashMap<String, String> map = new HashMap<String, String>();

                        map.put(TAG_Name, object.getString("uname"));
                        map.put(TAG_Pass, object.getString("pwd"));

                        contactList.add(map);

                    }
                }

                ListAdapter adapter = new SimpleAdapter(this, contactList,
                        R.layout.menu_list_row, new String[] { TAG_Name,
                                TAG_Pass }, new int[] { R.id.LR_Name,
                                R.id.LR_date });
                list.setAdapter(adapter);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        // Launching new screen on Selecting Single ListItem
        list.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                Toast.makeText(getBaseContext(), "Booyah", Toast.LENGTH_SHORT)
                        .show();
            }
        });
    }

}

Upvotes: 1

Views: 3096

Answers (1)

Nermeen
Nermeen

Reputation: 15973

Try this, i did not test it, but i'm using same code with different data and it works..

try {
        HttpParams params = new BasicHttpParams();
        HttpConnectionParams.setSoTimeout(params, 0);
        HttpClient httpClient = new DefaultHttpClient(params);

        //prepare the HTTP GET call 
        HttpGet httpget = new HttpGet(urlString);
        //get the response entity
        HttpEntity entity = httpClient.execute(httpget).getEntity();

        if (entity != null) {
            //get the response content as a string
            String response = EntityUtils.toString(entity);
            //consume the entity
            entity.consumeContent();

            // When HttpClient instance is no longer needed, shut down the connection manager to ensure immediate deallocation of all system resources
            httpClient.getConnectionManager().shutdown();

            //return the JSON response
            JSONArray jsonArray = new JSONArray(response.trim());
            if(jsonArray != null) {
               String[] unames = new String[jsonArray.length()];
               for(int i = 0 ; i < jsonArray.length() ; i++) {
                    JSONObject object = (JSONObject) jsonArray.get(i); 
                    unames[i] = object.getString("uname");
               }
               ListAdapter adapter = new SimpleAdapter(this, contactList,
                    R.layout.menu_list_row, unames, new int[] { R.id.LR_Name });
               list.setAdapter(adapter);
            } 
        }
    }catch (Exception e) {
        e.printStackTrace();
    }

To add the result to a ListView, follow this link http://www.mkyong.com/android/android-listview-example/ passing the String[] unames

Upvotes: 1

Related Questions