我正在尝试在表格布局中显示我的json数据,为此我准备了一个运行良好而没有错误的phpwebservice我也在android上获得了Json数据但是我不明白它为什么不填充不幸的是,tablelayout和我的应用已经停止了。我的代码就是......
TableActivity
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));
}
}
}
这是我完整的json回复...
{
"Users":[
{
"id":"1",
"name":"vandana rao",
"username":"vr",
"email":"vr@gmail.com"
},
{
"id":"2",
"name":"hemant rao",
"username":"hr",
"email":"hr@gmail.com"
},
{
"id":"3",
"name":"kirti rao",
"username":"kr",
"email":"kr@gmail.com"
},
{
"id":"4",
"name":"bhavana rao",
"username":"br",
"email":"br@gmail.com"
},
{
"id":"5",
"name":"nilesh rao",
"username":"nr",
"email":"nr@gmail.com"
},
{
"id":"6",
"name":"rishika rao",
"username":"rr",
"email":"rr@gmail.com"
},
{
"id":"7",
"name":"jitu",
"username":"jr",
"email":"jr@gmail.com"
},
{
"id":"8",
"name":"kushi",
"username":"krr",
"email":"krr@gmail.com"
},
{
"id":"9",
"name":"yogi",
"username":"yr",
"email":"yr@gmail.com"
},
{
"id":"10",
"name":"kavish",
"username":"kvi",
"email":"kvi@gmail.com"
},
{
"id":"11",
"name":"kaviya",
"username":"kaviya",
"email":"kaviya@gmail.com"
},
{
"id":"12",
"name":"bharti",
"username":"bh",
"email":"bh@gmail.com"
}
],
"success":1
}
以下代码中的错误.......
// Add the TableRow to the TableLayout
tl.addView(tr, new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT));
答案 0 :(得分:0)
您正在从JSONArray
结果中解析String
,但它是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);
}
答案 1 :(得分:0)
您在表格布局中添加行的方式可以将多个TableRow
实例添加到tableLayout对象中
尝试在代码中添加多行,多次添加单行:
尝试以下代码:
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);
}
希望这对你有用。