我正在动态更新tablelayout,如下所示,我为每个tableRow附加了一个imagebutton和一个Textview。每当我启动我的活动时它只显示4行(实际上应该显示10行)但是如果我在代码中保留断点并且慢慢调试以找出它正确显示所有10行的问题。我怀疑它必须是代码中的内存问题,因为我从网上获取图像,我觉得需要大量的内存。我添加到布局后尝试释放视图内存,但它一直在崩溃 请让我知道我做错了什么。
for (int i = 0; i < parsedExampleDataSet.getAppNameString().size(); i++)
{
TableRow row = new TableRow(this);
TextView tv = new TextView(this);
tv.setText("AppName: "+ parsedExampleDataSet.getAppNameString().get(i) +"\n" + "Description: " + parsedExampleDataSet.getDescriptionString().get(i));
ImageButton imgBtn = new ImageButton(this);
URL aURL = new URL(parsedExampleDataSet.getImageUrlString().get(i));
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
Bitmap bm = BitmapFactory.decodeStream(bis);
imgBtn.setImageBitmap(bm);
imgBtn.setBackgroundColor(color.transparent);
imgBtn.setTag(parsedExampleDataSet.getMarketLinkString().get(i));
bis.close();
is.close();
row.addView(imgBtn);
row.addView(tv);
table.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); //here table is a tablelayout object
}
提前致谢
Prathima
答案 0 :(得分:0)
答案 1 :(得分:0)
答案似乎位于parsedExampleDataSet.getAppNameString().size()
:
运行程序时,for(;;)
循环只迭代4次
当您运行调试器并手动步进时,它会迭代10次,这是根据您的期望
如何填充parsedExampleDataSet.getAppNameString()?它的大小用作for(;;)
循环的上限,它似乎随时间而变化。如果它由异步进程(线程)填充,这将解释问题。
随意添加更多详情并告诉我们。我将进一步编辑/详细说明您将带来的新元素。