2016-05-03 14 views
0

私は自分のjsonデータをテーブルレイアウトに表示しようとしています。そのためにエラーなしで正常に動作するphpwebserviceを1つ用意しています。 tはアンドロイドのテーブルレイアウトでJsonデータを埋める方法

TableActivity ..私のコードがある、それはtablelayoutに移入されていないと私のアプリは、残念ながらstopped.hereを持っている理由を理解するここで

package com.example.my.phploginregistration; 

import java.util.ArrayList; 
import java.util.Iterator; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.LinearLayout; 
import android.widget.TableLayout; 
import android.widget.TableRow; 
import android.widget.TableRow.LayoutParams; 
import android.widget.TextView; 

public class TableActivity extends Activity { 

String data = ""; 
TableLayout tl; 
TableRow tr; 
TextView label; 

private static final String Json_URL ="http://10.0.2.2:8080/getRecordForTableView.php"; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_table); 

    tl = (TableLayout) findViewById(R.id.main_table); 

    final GetDataFromDB getdb = new GetDataFromDB(); 
    new Thread(new Runnable() { 
     public void run() { 
      data = getdb.getDataFromDB(Json_URL); 
      System.out.println("data::" + data); 

      runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        ArrayList<Users> users = parseJSON(data); 
        addData(users); 
       } 
      }); 

     } 
    }).start(); 
} 

public ArrayList<Users> parseJSON(String result) { 
    ArrayList<Users> users = new ArrayList<Users>(); 
    try { 
     JSONArray jArray = new JSONArray(result); 
     for (int i = 0; i < jArray.length(); i++) { 
      JSONObject json_data = jArray.getJSONObject(i); 
      Users user = new Users(); 
      user.setId(json_data.getInt("id")); 
      user.setName(json_data.getString("name")); 
      user.setUsername(json_data.getString("username")); 
      user.setEmail(json_data.getString("email")); 
      users.add(user); 

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

void addHeader(){ 
    /** Create a TableRow dynamically **/ 
    tr = new TableRow(this); 

    /** Creating a TextView to add to the row **/ 
    label = new TextView(this); 
    label.setText("Name"); 
    label.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT)); 
    label.setPadding(5, 5, 5, 5); 
    label.setBackgroundColor(Color.RED); 
    LinearLayout Ll = new LinearLayout(this); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 
      LayoutParams.WRAP_CONTENT); 
    params.setMargins(5, 5, 5, 5); 
    //Ll.setPadding(10, 5, 5, 5); 
    Ll.addView(label,params); 
    tr.addView(Ll); // Adding textView to tablerow. 

    /** Creating Qty Button **/ 
    TextView uname = new TextView(this); 
    uname.setText("Username"); 
    uname.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT)); 
    uname.setPadding(5, 5, 5, 5); 
    uname.setBackgroundColor(Color.RED); 
    Ll = new LinearLayout(this); 
    params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 
      LayoutParams.WRAP_CONTENT); 
    params.setMargins(0, 5, 5, 5); 
    //Ll.setPadding(10, 5, 5, 5); 
    Ll.addView(uname,params); 
    tr.addView(Ll); // Adding textview to tablerow. 

    // Add the TableRow to the TableLayout 
    tl.addView(tr, new TableLayout.LayoutParams(
      LayoutParams.FILL_PARENT, 
      LayoutParams.WRAP_CONTENT)); 

    /** Creating Qty Button **/ 
    TextView email = new TextView(this); 
    email.setText("email"); 
    email.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT)); 
    email.setPadding(5, 5, 5, 5); 
    email.setBackgroundColor(Color.RED); 
    Ll = new LinearLayout(this); 
    params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 
      LayoutParams.WRAP_CONTENT); 
    params.setMargins(0, 5, 5, 5); 
    //Ll.setPadding(10, 5, 5, 5); 
    Ll.addView(email,params); 
    tr.addView(Ll); // Adding textview to tablerow. 

    // Add the TableRow to the TableLayout 
    tl.addView(tr, new TableLayout.LayoutParams(
      LayoutParams.MATCH_PARENT, 
      LayoutParams.WRAP_CONTENT)); 
} 

@SuppressWarnings({ "rawtypes" }) 
public void addData(ArrayList<Users> users) { 

    addHeader(); 

    for (Iterator i = users.iterator(); i.hasNext();) { 

     Users p = (Users) i.next(); 

     /** Create a TableRow dynamically **/ 
     tr = new TableRow(this); 

     /** Creating a TextView to add to the row **/ 
     label = new TextView(this); 
     label.setText(p.getName()); 
     label.setId(p.getId()); 
     label.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT)); 
     label.setPadding(5, 5, 5, 5); 
     label.setBackgroundColor(Color.GRAY); 
     LinearLayout Ll = new LinearLayout(this); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 
       LayoutParams.WRAP_CONTENT); 
     params.setMargins(5, 2, 2, 2); 
     //Ll.setPadding(10, 5, 5, 5); 
     Ll.addView(label,params); 
     tr.addView(Ll); // Adding textView to tablerow. 

     /** Creating Qty Button **/ 
     TextView un = new TextView(this); 
     un.setText(p.getUsername()); 
     un.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT)); 
     un.setPadding(5, 5, 5, 5); 
     un.setBackgroundColor(Color.GRAY); 
     Ll = new LinearLayout(this); 
     params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 
       LayoutParams.WRAP_CONTENT); 
     params.setMargins(0, 2, 2, 2); 
     //Ll.setPadding(10, 5, 5, 5); 
     Ll.addView(un,params); 
     tr.addView(Ll); // Adding textview to tablerow. 

     // Add the TableRow to the TableLayout 
     tl.addView(tr, new TableLayout.LayoutParams(
       LayoutParams.MATCH_PARENT, 
       LayoutParams.WRAP_CONTENT)); 


     /** Creating Qty Button **/ 
     TextView mail = new TextView(this); 
     mail.setText(p.getEmail()); 
     mail.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT)); 
     mail.setPadding(5, 5, 5, 5); 
     mail.setBackgroundColor(Color.GRAY); 
     Ll = new LinearLayout(this); 
     params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 
       LayoutParams.WRAP_CONTENT); 
     params.setMargins(0, 2, 2, 2); 
     //Ll.setPadding(10, 5, 5, 5); 
     Ll.addView(mail,params); 
     tr.addView(Ll); // Adding textview to tablerow. 

     // Add the TableRow to the TableLayout 
     tl.addView(tr, new TableLayout.LayoutParams(
       LayoutParams.MATCH_PARENT, 
       LayoutParams.WRAP_CONTENT)); 
    } 
} 
}         

I got Json Data but after that my app got unfortunately stopped.

である私の完全なJSONレスポンス...

コードは次の
{ 
    "Users":[ 
    { 
    "id":"1", 
    "name":"vandana rao", 
    "username":"vr", 
    "email":"[email protected]" 
    }, 
    { 
    "id":"2", 
    "name":"hemant rao", 
    "username":"hr", 
    "email":"[email protected]" 
    }, 
    { 
    "id":"3", 
    "name":"kirti rao", 
    "username":"kr", 
    "email":"[email protected]" 
    }, 
    { 
    "id":"4", 
    "name":"bhavana rao", 
    "username":"br", 
    "email":"[email protected]" 
    }, 
    { 
    "id":"5", 
    "name":"nilesh rao", 
    "username":"nr", 
    "email":"[email protected]" 
    }, 
    { 
    "id":"6", 
    "name":"rishika rao", 
    "username":"rr", 
    "email":"[email protected]" 
    }, 
    { 
    "id":"7", 
    "name":"jitu", 
    "username":"jr", 
    "email":"[email protected]" 
    }, 
    { 
    "id":"8", 
    "name":"kushi", 
    "username":"krr", 
    "email":"[email protected]" 
    }, 
    { 
    "id":"9", 
    "name":"yogi", 
    "username":"yr", 
    "email":"[email protected]" 
    }, 
    { 
    "id":"10", 
    "name":"kavish", 
    "username":"kvi", 
    "email":"[email protected]" 
    }, 
    { 
    "id":"11", 
    "name":"kaviya", 
    "username":"kaviya", 
    "email":"[email protected]" 
    }, 
    { 
    "id":"12", 
    "name":"bharti", 
    "username":"bh", 
    "email":"[email protected]" 
    } 
    ], 
    "success":1 
    } 

エラー.......

// Add the TableRow to the TableLayout 
    tl.addView(tr, new TableLayout.LayoutParams(
      LayoutParams.MATCH_PARENT, 
      LayoutParams.WRAP_CONTENT)); 
+0

あなたの完全なjsonレスポンスを投稿してください。 – Mohit

+0

あなたのアプリが停止している場合は、logcatを投稿してください。 –

+0

にエラーメッセージを投稿してください。 – AppleDroid

答えて

0

あなたString結果からJSONArrayを解析しているが、それはあなたがこのように渡すことにしていJSONOjectです。 ..

JSONObject jObj = new JSONObject(result); 
JSONArray jArray =jObj.getJSONArray("Users"); 
for (int i = 0; i < jArray.length(); i++) { 
    JSONObject json_data = jArray.getJSONObject(i); 
    Users user = new Users(); 
    user.setId(json_data.getInt("id")); 
    user.setName(json_data.getString("name")); 
    user.setUsername(json_data.getString("username")); 
    user.setEmail(json_data.getString("email")); 
    users.add(user); 
} 
0

テーブルレイアウトに行を追加した方法あなたは、単一の行を複数回追加しているあなたのコードのように複数の行を追加し、あなたのtableLayoutオブジェクトに

てみてください複数TableRowインスタンスを追加することができます。これはために動作します

void addHeader(){ 
    /** Create a TableRow dynamically **/ 
    tr = new TableRow(this); 

    /** Creating a TextView to add to the row **/ 
    label = new TextView(this); 
    label.setText("Name"); 
    label.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT)); 
    label.setPadding(5, 5, 5, 5); 
    label.setBackgroundColor(Color.RED); 
    LinearLayout Ll = new LinearLayout(this); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 
      LayoutParams.WRAP_CONTENT); 
    params.setMargins(5, 5, 5, 5); 
    //Ll.setPadding(10, 5, 5, 5); 
    Ll.addView(label,params); 
    tr.addView(Ll); // Adding textView to tablerow. 


    tr1=new TableRow(this); 
    /** Creating Qty Button **/ 
    TextView uname = new TextView(this); 
    uname.setText("Username"); 
    uname.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT)); 
    uname.setPadding(5, 5, 5, 5); 
    uname.setBackgroundColor(Color.RED); 
    L2 = new LinearLayout(this); 
    params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 
      LayoutParams.WRAP_CONTENT); 
    params.setMargins(0, 5, 5, 5); 
    //Ll.setPadding(10, 5, 5, 5); 
    L2.addView(uname,params); 
    tr1.addView(L2); // Adding textview to tablerow. 

    // Add the TableRow to the TableLayout 
    tl.addView(tr); 
    tl.addView(tr1); 


    tr2=new TableRow(this); 

    /** Creating Qty Button **/ 
    TextView email = new TextView(this); 
    email.setText("email"); 
    email.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT)); 
    email.setPadding(5, 5, 5, 5); 
    email.setBackgroundColor(Color.RED); 
    L3 = new LinearLayout(this); 
    params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 
      LayoutParams.WRAP_CONTENT); 
    params.setMargins(0, 5, 5, 5); 
    //Ll.setPadding(10, 5, 5, 5); 
    L3.addView(email,params); 
    tr2.addView(L3); // Adding textview to tablerow. 

    // Add the TableRow to the TableLayout 
    tl.addView(tr2); 
    } 

希望:コードの下に試してみてください

君は。

関連する問題