Android应用程序在表格布局中动态添加行给出错误

标签 android

Java代码-

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONStringer;
import android.os.AsyncTask;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Color;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v4.app.NavUtils;
public class DisplayStore extends Activity {
// Progress Dialog
private ProgressDialog pDialog;
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// Creating JSON Parser object
//JSONParser jParser = new JSONParser();
ArrayList<HashMap<String, String>> ContriList;
// url to get all products list
private static String url_get_contri =     "http://10.0.2.2/annapurna_connect/GetContri.php";

// JSON Node names
private static final String TAG_SUCCESS = "success";
/*  private static final String TAG_PRODUCTS = "products";
private static final String TAG_PID = "pid";
private static final String TAG_NAME = "name";*/
// products JSONArray
JSONArray products = null;
@SuppressLint({ "NewApi", "NewApi" })
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_store);
getActionBar().setDisplayHomeAsUpEnabled(true);
ContriList = new ArrayList<HashMap<String, String>>();
Toast.makeText(getApplicationContext(), url_get_contri,Toast.LENGTH_LONG).show();
new LoadContri().execute();
}

/**
* Background Async Task to Load all product by making HTTP Request
* */
class LoadContri extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(getApplicationContext(), "here i am",Toast.LENGTH_LONG).show();
pDialog = new ProgressDialog(DisplayStore.this);
pDialog.setMessage("Loading Information. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
/**
* getting All products from url
* */
@SuppressWarnings("deprecation")
protected String doInBackground(String... args) {
// Building Parameters
try {

List<NameValuePair> params = new ArrayList<NameValuePair>();
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url_get_contri += "?" + paramString;
HttpGet httpGet = new HttpGet(url_get_contri);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();

}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
/*catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}*/

// Log.d("checking",sb);    
// Check your log cat for JSON reponse
Log.d("All Products: ",json);
String category,type,city,state,abc;
String test="";
int serves;
try
{
//String json=sb.toString();
// String result=json_decode(json);
// String test="";
JSONArray jArray = new JSONArray(json);
test+="here";
JSONObject json_data=null;
test+="here1";
TableLayout tv=(TableLayout)findViewById(R.id.Table);
tv.removeAllViewsInLayout();
int flag=1;
test+="here2";

for(int i=-1;i<jArray.length();i++){

Log.d("i",String.valueOf(i));
TableRow tr=new TableRow(getApplicationContext());
tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
test+="here4";
if(flag==1)
// this will be executed once
{
test+="here5";
TextView b3=new TextView(getApplicationContext());
b3.setText("Category");
b3.setTextColor(Color.BLUE);
b3.setTextSize(15);
tr.addView(b3);

TextView b4=new TextView(getApplicationContext());
b4.setPadding(10, 0, 0, 0);
b4.setTextSize(15);
b4.setText("Type");
b4.setTextColor(Color.BLUE);
tr.addView(b4);
test+="after1col";
TextView b5=new TextView(getApplicationContext());
b5.setPadding(10, 0, 0, 0);
b5.setText("Serves");
b5.setTextColor(Color.BLUE);
b5.setTextSize(15);
tr.addView(b5);

TextView b6=new TextView(getApplicationContext());
b6.setText("City");
b6.setTextColor(Color.BLUE);
b6.setTextSize(15);
tr.addView(b6);
TextView b7=new TextView(getApplicationContext());
b7.setText("State");
b7.setTextColor(Color.BLUE);
b7.setTextSize(15);
tr.addView(b7);
test+="heresettext";
tv.addView(tr);
test+="aftertv";
final View vline = new View(getApplicationContext());
test+="aftervline";
vline.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
test+="afterlayout";
vline.setBackgroundColor(Color.BLUE);
test+="aftersetback";
tv.addView(vline); // add line below heading
//tv.addView(tr,new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
test+="addview";
flag=0;
test+="aftersettext";
Log.d("check","here");

}
else
{ Log.d("check","here");

test+="here6";
json_data = jArray.getJSONObject(i);
test+="here7";

TextView b=new TextView(getApplicationContext());
category=String.valueOf(json_data.getString("Category"));
b.setText(category);
b.setTextColor(Color.RED);
b.setTextSize(15);
tr.addView(b);
TextView b1=new TextView(getApplicationContext());
b1.setPadding(10, 0, 0, 0);
b1.setTextSize(15);
type=json_data.getString("Type");
b1.setText(type);
b1.setTextColor(Color.WHITE);
tr.addView(b1);
test+="after1col";

TextView b2=new TextView(getApplicationContext());
b2.setPadding(10, 0, 0, 0);
serves=json_data.getInt("Serves");
test+="getInt";
abc=String.valueOf(serves);
test+=abc;
b2.setText(abc);
test+="after2col";
b2.setTextColor(Color.RED);
b2.setTextSize(15);
tr.addView(b2);
TextView b3=new TextView(getApplicationContext());
b3.setPadding(10, 0, 0, 0);
b3.setTextSize(15);
city=json_data.getString("City");
b3.setText(type);
b3.setTextColor(Color.WHITE);
tr.addView(b3);
test+="after23col";
TextView b4=new TextView(getApplicationContext());
b4.setPadding(10, 0, 0, 0);
b4.setTextSize(15);
state=json_data.getString("State");
b4.setText(type);
b4.setTextColor(Color.WHITE);
tr.addView(b4);
tv.addView(tr);

final View vline1 = new View(getApplicationContext());
vline1.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
vline1.setBackgroundColor(Color.WHITE);
tv.addView(vline1); // add line below each row 
// tv.addView(tr,new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
Log.d("check","here2");
}
}

} catch (Exception e) {
Log.d("in JSon Exception",test);
e.printStackTrace();
}
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String file_url) {
// dismiss the dialog after getting all products
Log.d("in post","wats the problem");
pDialog.dismiss();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_display_store, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}


}

XML-

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/backimg" >
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Table" 
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentRight="true"
android:background="#ffffff"
android:shrinkColumns="*"
android:stretchColumns="*" >
</TableLayout>
</RelativeLayout>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="49dp"
android:layout_toLeftOf="@+id/textView1"
android:text="Access Through OrgID: "
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold|italic" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView2"
android:layout_alignBottom="@+id/textView2"
android:layout_toRightOf="@+id/textView2"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/textView1"
android:text="Go"
android:textStyle="bold|italic" />
</RelativeLayout>

错误信息-

11-04 15:48:21.687: E/Trace(695): error opening trace file: No such file or directory (2)
11-04 15:48:23.498: D/dalvikvm(695): GC_FOR_ALLOC freed 40K, 3% free 8013K/8259K, paused 94ms, total 98ms
11-04 15:48:23.530: I/dalvikvm-heap(695): Grow heap (frag case) to 8.625MB for 787816-byte allocation
11-04 15:48:23.857: D/dalvikvm(695): GC_CONCURRENT freed <1K, 4% free 8782K/9095K, paused 67ms+191ms, total 332ms
11-04 15:48:23.857: D/dalvikvm(695): WAIT_FOR_CONCURRENT_GC blocked 2ms
11-04 15:48:23.918: D/dalvikvm(695): GC_FOR_ALLOC freed 0K, 4% free 8782K/9095K, paused 46ms, total 46ms
11-04 15:48:23.948: I/dalvikvm-heap(695): Grow heap (frag case) to 10.317MB for 1774384-byte allocation
11-04 15:48:24.148: D/dalvikvm(695): GC_CONCURRENT freed 0K, 4% free 10515K/10887K, paused 109ms+28ms, total 203ms
11-04 15:48:24.428: D/dalvikvm(695): GC_FOR_ALLOC freed 776K, 11% free 9778K/10887K, paused 66ms, total 68ms
11-04 15:48:24.458: I/dalvikvm-heap(695): Grow heap (frag case) to 10.933MB for 1400016-byte allocation
11-04 15:48:24.678: D/dalvikvm(695): GC_CONCURRENT freed <1K, 10% free 11145K/12295K, paused 111ms+21ms, total 219ms
11-04 15:48:25.450: I/Choreographer(695): Skipped 85 frames!  The application may be doing too much work on its main thread.
11-04 15:48:25.568: D/gralloc_goldfish(695): Emulator without GPU emulation detected.
11-04 15:48:31.867: D/dalvikvm(695): GC_FOR_ALLOC freed 12K, 9% free 11227K/12295K, paused 39ms, total 42ms
11-04 15:48:31.887: I/dalvikvm-heap(695): Grow heap (frag case) to 12.348MB for 1400016-byte allocation
11-04 15:48:32.067: D/dalvikvm(695): GC_CONCURRENT freed 2K, 9% free 12592K/13703K, paused 79ms+19ms, total 173ms
11-04 15:48:32.308: D/dalvikvm(695): GC_FOR_ALLOC freed <1K, 2% free 13502K/13703K, paused 46ms, total 48ms
11-04 15:48:32.347: I/dalvikvm-heap(695): Grow heap (frag case) to 15.902MB for 2797584-byte allocation
11-04 15:48:32.537: D/dalvikvm(695): GC_CONCURRENT freed <1K, 2% free 16233K/16455K, paused 105ms+20ms, total 191ms
11-04 15:48:36.737: I/Choreographer(695): Skipped 199 frames!  The application may be doing too much work on its main thread.
11-04 15:48:37.738: I/Choreographer(695): Skipped 246 frames!  The application may be doing too much work on its main thread.
11-04 15:48:38.327: I/Choreographer(695): Skipped 129 frames!  The application may be doing too much work on its main thread.
11-04 15:48:38.517: I/Choreographer(695): Skipped 41 frames!  The application may be doing too much work on its main thread.
11-04 15:48:38.677: I/Choreographer(695): Skipped 40 frames!  The application may be doing too much work on its main thread.
11-04 15:48:39.217: I/Choreographer(695): Skipped 31 frames!  The application may be doing too much work on its main thread.
11-04 15:48:39.658: I/Choreographer(695): Skipped 72 frames!  The application may be doing too much work on its main thread.
11-04 15:48:39.917: I/Choreographer(695): Skipped 66 frames!  The application may be doing too much work on its main thread.
11-04 15:48:40.178: I/Choreographer(695): Skipped 54 frames!  The application may be doing too much work on its main thread.
11-04 15:48:40.347: I/Choreographer(695): Skipped 33 frames!  The application may be doing too much work on its main thread.
11-04 15:48:40.667: I/Choreographer(695): Skipped 30 frames!  The application may be doing too much work on its main thread.
11-04 15:48:41.327: I/Choreographer(695): Skipped 31 frames!  The application may be doing too much work on its main thread.
11-04 15:48:41.837: I/Choreographer(695): Skipped 30 frames!  The application may be doing too much work on its main thread.
11-04 15:48:43.018: I/Choreographer(695): Skipped 44 frames!  The application may be doing too much work on its main thread.
11-04 15:48:43.178: I/Choreographer(695): Skipped 41 frames!  The application may be doing too much work on its main thread.
11-04 15:48:43.357: I/Choreographer(695): Skipped 45 frames!  The application may be doing too much work on its main thread.
11-04 15:48:43.578: I/Choreographer(695): Skipped 41 frames!  The application may be doing too much work on its main thread.
11-04 15:48:43.798: I/Choreographer(695): Skipped 56 frames!  The application may be doing too much work on its main thread.
11-04 15:48:44.638: I/Choreographer(695): Skipped 35 frames!  The application may be doing too much work on its main thread.
11-04 15:48:45.548: I/Choreographer(695): Skipped 31 frames!  The application may be doing too much work on its main thread.
11-04 15:48:45.870: D/All Products:(695): [{"ContriID":"100037","Category":"V","Type":"U","Serves":"5","City":"hhhh","State":"jjjg"}]
11-04 15:48:46.179: D/i(695): -1
11-04 15:48:46.368: I/Choreographer(695): Skipped 37 frames!  The application may be doing too much work on its main thread.
11-04 15:48:47.418: D/in JSon Exception(695): herehere1here2here4here5after1colheresettext
11-04 15:48:48.058: W/System.err(695): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
11-04 15:48:48.128: I/Choreographer(695): Skipped 32 frames!  The application may be doing too much work on its main thread.
11-04 15:48:48.388: W/System.err(695):  at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4607)
11-04 15:48:48.459: W/System.err(695):  at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:835)
11-04 15:48:48.518: W/System.err(695):  at android.view.View.requestLayout(View.java:15129)
11-04 15:48:48.578: W/System.err(695):  at android.view.View.requestLayout(View.java:15129)
11-04 15:48:48.648: W/System.err(695):  at android.view.View.requestLayout(View.java:15129)
11-04 15:48:48.698: W/System.err(695):  at android.view.View.requestLayout(View.java:15129)
11-04 15:48:48.828: W/System.err(695):  at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:292)
11-04 15:48:48.868: W/System.err(695):  at android.view.View.requestLayout(View.java:15129)
11-04 15:48:48.938: W/System.err(695):  at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:292)
11-04 15:48:49.008: W/System.err(695):  at android.view.View.requestLayout(View.java:15129)
11-04 15:48:49.248: W/System.err(695):  at android.widget.TableLayout.requestLayout(TableLayout.java:226)
11-04 15:48:49.309: I/Choreographer(695): Skipped 32 frames!  The application may be doing too much work on its main thread.
11-04 15:48:49.358: W/System.err(695):  at android.view.ViewGroup.addView(ViewGroup.java:3247)
11-04 15:48:49.448: W/System.err(695):  at android.widget.TableLayout.addView(TableLayout.java:425)
11-04 15:48:49.579: W/System.err(695):  at android.view.ViewGroup.addView(ViewGroup.java:3225)
11-04 15:48:49.608: W/System.err(695):  at android.widget.TableLayout.addView(TableLayout.java:416)
11-04 15:48:49.758: W/System.err(695):  at com.example.annapurna.DisplayStore$LoadContri.doInBackground(DisplayStore.java:228)
11-04 15:48:49.848: W/System.err(695):  at com.example.annapurna.DisplayStore$LoadContri.doInBackground(DisplayStore.java:1)
11-04 15:48:49.898: I/Choreographer(695): Skipped 34 frames!  The application may be doing too much work on its main thread.
11-04 15:48:50.038: W/System.err(695):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
11-04 15:48:50.098: W/System.err(695):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
11-04 15:48:50.218: W/System.err(695):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
11-04 15:48:50.468: W/System.err(695):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
11-04 15:48:50.499: W/System.err(695):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
11-04 15:48:50.660: W/System.err(695):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
11-04 15:48:50.798: W/System.err(695):  at java.lang.Thread.run(Thread.java:856)
11-04 15:48:50.968: D/in post(695): wats the problem
11-04 15:48:55.607: I/Choreographer(695): Skipped 36 frames!  The application may be doing too much work on its main thread.
11-04 15:51:22.140: I/Choreographer(695): Skipped 46 frames!  The application may be doing too much work on its main thread.

我正在尝试从 mysql 数据库中获取数据库条目并将其显示在表格中。 Php 文件工作正常,并且在 logcat 中显示数据。但没有在 UI 端显示它,我找不到错误,所以请帮忙解决这个问题。

最佳答案

现在从您的 CatLog 中,您正在重载 UI 线程。

很可能,虽然一切都在“工作”,但负载太多,无法及时响应。

您应该做的是使用游标适配器,根据需要从数据库加载信息。

例如,您可能会在屏幕上显示 1000 个 View ,而您只能看到其中的 5-20 个?这会浪费精力、CPU 时间和内存。

这将导致性能极度下降。

研究自定义/游标适配器。

附注没有行缩进,很难阅读您发布的代码。

关于Android应用程序在表格布局中动态添加行给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13217771/

相关文章:

java - Android 4 标签布局的最佳方式?

android - Android 上的程序文件存储在哪里? (不是 .apk 文件,而是实际安装的文件)

java - IO异常 : Broken pipe when running Android application

android - 我需要迁移才能将类型 Int 更改为 Long 吗?

java - Android:用于 ListView 基本适配器实现的项目单击监听器

java - 想在java中发送十六进制字符串数据

java - Android Facebook SDK 授权后访问 token 无效

java - 我们如何在Android中模拟通话和短信?

android - 如何比 MIN_PERIODIC_INTERVAL_MILLIS 更快地测试 PeriodicWorkRequest?

android - 从 MySql 到 FireBase 的数据结构(NOSQL 数据库)