Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Populating Table Layout using JSON String

I have a JSON String returned by my web service as follows:

{"checkrecord"[{"rollno":"abc2","percentage":40,"attended":12,"missed":34}],"Table1":[]}

The above String represents my dataset. I have converted the String to a JSON Object and I now want to put the data in the String into a TableLayout.

I want the table to be like this when displayed on android app:

    rollno       percentage    attended    missed
     abc2          40              12        34

This is the code I am using as of now :

    //json processing code

 public void jsonprocessing(String c)
   {
       try 
       {

       JSONObject jsonobject = new JSONObject(c);

       JSONArray array = jsonobject.getJSONArray("checkrecord");

        int max = array.length();

       for (int j = 0; j < max; j++)
       {

    JSONObject obj = array.getJSONObject(j);
    JSONArray names = obj.names();

    for (int k = 0; k < names.length(); k++) 
        {
             name = names.getString(k);
            value= obj.getString(name);
               createtableLayout();  

        }


       }     

     } 

  catch (JSONException e)           
   {                
      // TODO Auto-generated catch block
    e.printStackTrace();        
}

 }

//create table layout
public void createtableLayout()
{

     Log.d("values",value); //I am able to see the values abc2,40,12 and 34 over  here in logcat  
     TableLayout t= (TableLayout)findViewById(R.id.tablelayout);
         TableRow r1=new TableRow(this);
         r1.setLayoutParams(new LayoutParams(
         LayoutParams.FILL_PARENT,
         LayoutParams.WRAP_CONTENT));    
         TextView t1 = new TextView(this);
         t1.setText(value);
         t1.setTextColor(Color.BLACK);
         t1.setLayoutParams(new LayoutParams(
             LayoutParams.FILL_PARENT,
             LayoutParams.WRAP_CONTENT));
         r1.addView(t1);
         t.addView(r1, new TableLayout.LayoutParams( LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));

 }

My TableLayout contains a button and a EditText as the first TableRow. After I click the button I get the JSON String. So I need to insert 2 TableRows dynamically after that as per my requirement.

My xml as of now is as follows:

   <?xml version="1.0" encoding="utf-8"?>
   <TableLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/tablelayout"
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent"
        android:background="#000044">
   <TableRow> 

   <EditText 
        android:id="@+id/edittext" 
        android:width="200px" />

   <Button 
        android:id="@+id/button" 
        android:text="Check Record"/>

   </TableRow> 

   </TableLayout>

So my problem is how to add those 2 extra TableRows so as to populate them with the String values ?

My code isn't working fine. I am not able to get the required output.

Can anyone help me in this?

Thanks

like image 835
Parth Doshi Avatar asked Dec 03 '11 09:12

Parth Doshi


2 Answers

you can use multicolumn listview for your purpose,

Parse the JSON response and get values into different strings and use this blog for your purpose

Multicolumn Listview

like image 125
Abhi Avatar answered Sep 18 '22 14:09

Abhi


You, probably, can define those 2 more rows in your XML and make them initially invisible. Then upon receiving your data put your data in those rows and make them visible.

like image 35
Alexander Kulyakhtin Avatar answered Sep 20 '22 14:09

Alexander Kulyakhtin