Populating JSON from this link to android Listview

后端 未结 4 1422
余生分开走
余生分开走 2020-12-18 04:58

I am trying to display the elements in listview from the JSON::

JsonURL- https://dl.dropboxusercontent.com/s/rhk01nqlyj5gixl/jsonparsing.txt

相关标签:
4条回答
  • I would use GSON library for its simplicity. In this case you will have the following:

    A POJO student class for data mapping

    public class Student
        private int id;
        private String name;
        private String city;
        private String  Gender;
        private int age;
        private String birthdate;
    
        //getters and setters
    }
    

    To parse the data just do

    Student[] students;
    Type token = new TypeToken<Student[]>() {}.getType();
    Gson gson = new Gson();   
    students = gson.fromJson(jsonString, token);
    

    And from here you just add the data to the adapter, and that's it.

    0 讨论(0)
  • 2020-12-18 05:15

    Continuing your class:

    public class MainActivity extends Activity {
    
        private static String url="https://www.dropbox.com/s/rhk01nqlyj5gixl/jsonparsing.txt?dl=1";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //Create a JSON parser Instance ----- Used JSON parser from Android
            JSONParser jParser=new JSONParser();
    
            //Getting JSON string from URL ------ Used JSON Array from Android
            JSONArray json=jParser.getJSONFromUrl(url);
    
            List<WhateverObject> yourData = new ArrayList<WhateverObject>();
    
            try {
                for(int i=0;i<json.length();i++)
                {
                    JSONObject c=json.getJSONObject(i);// Used JSON Object from Android
    
                    //Storing each Json in a string variable
                    int AGE=c.getInt("age");
                    String NAME=c.getString("name");
                    String CITY=c.getString("city");
                    String GENDER=c.getString("Gender");
                    String BIRTHDATE=c.getString("birthdate");
    
    
                    yourData.add(new WhateverObject(NAME, CITY, GENDER, BIRTHDATE));
    
                }
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
            ListView yourListView = (ListView) findViewById(R.id.itemListView);
    
            ListAdapter customAdapter = new ListAdapter(this, R.layout.itemlistrow, yourData);
    
            yourListView.setAdapter(customAdapter);
    
        }
    
    
    }
    

    adater:

    public class ListAdapter extends ArrayAdapter<Item> {
    
        public ListAdapter(Context context, int textViewResourceId) {
            super(context, textViewResourceId);
            // TODO Auto-generated constructor stub
        }
    
        private List<Item> items;
    
        public ListAdapter(Context context, int resource, List<Item> items) {
    
            super(context, resource, items);
    
            this.items = items;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
    
            View v = convertView;
    
            TextView tt = null;
            TextView tt1 = null;
            TextView tt2 = null;
            TextView tt3 = null;
            TextView tt4 = null;
    
            if (v == null) {
    
                LayoutInflater vi;
                vi = LayoutInflater.from(getContext());
                v = vi.inflate(R.layout.itemlistrow, null);
    
                tt = (TextView) v.findViewById(R.id.age);
                tt1 = (TextView) v.findViewById(R.id.name);
                tt2 = (TextView) v.findViewById(R.id.city);
                tt3 = (TextView) v.findViewById(R.id.gender);
                tt4 = (TextView) v.findViewById(R.id.birthdate);
            }
    
            Item p = items.get(position);
    
            if (p != null) {
    
                if (tt != null) {
                    tt.setText(""+p.getAge());
                }
                if (tt1 != null) {
    
                    tt1.setText(""+p.getName());
                }
                if (tt2 != null) {
    
                    tt2.setText(""+p.getCity());
                }
    
                if (tt3 != null) {
    
                    tt3.setText(""+p.getGender());
                }
    
                if (tt4 != null) {
    
                    tt4.setText(""+p.getBirthdate());
                }
            }
    
    
    
            return v;
    
        }
    }
    

    object holding data:

    public class WhateverObject{
        private int age;
        private String name;
        private String city;
        private String gender;
        private String birthdate;        
    
        public WhateverObject(int age, String name, String city, String gender, String birthdate){
            this.age = age;
            this.name = name;
            this.city = city;
            this.gender = gender;
            this.birthdate = birthdate;
        }
    
        public int getAge(){
            return this.age;
        }
    
        public String getName(){
            return this.name;
        }
    
        public String getCity(){
            return this.city;
        }
    
        public String getGender(){
            return this.gender;
        }
    
        public String getBirthdate(){
            return this.birthdate;
        }
    }
    

    xml for listview item (save under itemlistrow name):

    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 android:layout_height="wrap_content" android:orientation="vertical"
                 android:layout_width="fill_parent">
    
        <TableRow android:layout_width="fill_parent"
                  android:id="@+id/TableRow01"
                  android:layout_height="wrap_content">
    
            <TextView
                    android:id="@+id/age"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="age" android:textStyle="bold"
                    android:gravity="left"
                    android:layout_weight="1"
                    android:typeface="monospace"
                    android:height="40sp"/>
        </TableRow>
    
        <TableRow android:layout_height="wrap_content"
                  android:layout_width="fill_parent">
    
            <TextView
                    android:id="@+id/name"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="name"
                    android:layout_weight="1"
                    android:height="20sp"/>
        </TableRow>
    
        <TableRow android:layout_height="wrap_content"
                  android:layout_width="fill_parent">
    
            <TextView
                    android:id="@+id/city"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="city"
                    android:layout_weight="1"
                    android:height="20sp"/>
        </TableRow>
    
        <TableRow android:layout_height="wrap_content"
                  android:layout_width="fill_parent">
    
            <TextView
                    android:id="@+id/gender"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="city"
                    android:layout_weight="1"
                    android:height="20sp"/>
        </TableRow>
    
        <TableRow android:layout_height="wrap_content"
                  android:layout_width="fill_parent">
    
            <TextView
                    android:id="@+id/birthdate"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="city"
                    android:layout_weight="1"
                    android:height="20sp"/>
        </TableRow>
    
    </TableLayout>
    

    Reused elements from https://stackoverflow.com/a/8166802/1276374


    Simpler example:

    public class MainActivity extends Activity {
    
        private static String url="https://www.dropbox.com/s/rhk01nqlyj5gixl/jsonparsing.txt?dl=1";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //Create a JSON parser Instance ----- Used JSON parser from Android
            JSONParser jParser=new JSONParser();
    
            //Getting JSON string from URL ------ Used JSON Array from Android
            JSONArray json=jParser.getJSONFromUrl(url);
    
            List<Map<String, String>> personList = new ArrayList<Map<String,String>>();
    
            try {
                for(int i=0;i<json.length();i++)
                {
                    JSONObject c=json.getJSONObject(i);// Used JSON Object from Android
    
                    //Storing each Json in a string variable
                    int AGE=c.getInt("age");
                    String NAME=c.getString("name");
                    String CITY=c.getString("city");
                    String GENDER=c.getString("Gender");
                    String BIRTHDATE=c.getString("birthdate");
    
    
                    personList.add(createPerson(AGE, NAME, CITY, GENDER, BIRTHDATE));
    
                }
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
            ListView yourListView = (ListView) findViewById(R.id.itemListView);
    
            simpleAdpt = new SimpleAdapter(this, personList, android.R.layout.simple_list_item_1, new String[] {"person"}, new int[] {android.R.id.text1});
    
            yourListView.setAdapter(simpleAdpt);
    
        }
    
        private HashMap<String, String> createPerson(int age, String name, String city, String gender, String birthdate) {
            HashMap<String, String> person = new HashMap<String, String>();
            person.put("person", name+" | "+age + " | "+city + " | "+gender + " | "+birthdate);
            return person;
        }
    
    
    
    }
    

    Thanks to http://www.javacodegeeks.com/2013/06/android-listview-tutorial-and-basic-example.html

    0 讨论(0)
  • 2020-12-18 05:31

    Use of ArrayList will be better for you.See the following snippet,

    Declare the following on the top,

    public static ArrayList<String> FriendName = new ArrayList<String>();
    

    And the following inside the try block after fetching the Name

    FriendName .add(Name);
    

    And you can easily fetch the values from the arraylist through the index value like follows,

    String data=FriendName.get(0);
    
    0 讨论(0)
  • 2020-12-18 05:32

    Create a class, say Student, to contain a record, create an array of Student from the JSON, and then use that with ArrayAdapter to populate your ListView.

    0 讨论(0)
提交回复
热议问题