我的应用需要列出一个特定活动的文字和图片。列表的每一行都有2列 - 1表示图像,1表示字符串。
如果图像数量很少(十个或更少),它可以工作。当它超过10(有时15)时,应用程序将崩溃。如何使这个工作超过十个图像?
以下是列出文本和图像的代码。前两行从strings.xml中检索数据。感谢。
pic=res.obtainTypedArray(R.array.site_pic);
arr_site = getResources().getStringArray(R.array.site_name);
TableLayout tl = (TableLayout)findViewById(R.id.myTableLayout);
for(int i=0; i<num_site; i++)
{
final TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
tr.setPadding(0, 10, 0, 10);
ImageView iv = new ImageView(this);
iv.setImageDrawable(pic.getDrawable(i));
iv.setAdjustViewBounds(true);
iv.setMaxHeight(80);
iv.setPadding(5, 5, 15, 5);
tr.addView(iv);
TextView tv1 = new TextView(this);
tv1.setText(arr_site[i]);
tv1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
tv1.setGravity(Gravity.LEFT);
tr.addView(tv1);
tl.addView(tr,new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
}
答案 0 :(得分:3)
如果您的图像尺寸是高分辨率,则可能是问题所在。根据我的经验,尽一切可能缩小图像尺寸 - 但保持质量至关重要。
此外,如果所有其他方法都失败了,那么轻松修复(如果你还没有尝试过)就是添加
<强>机器人:largeHeap = “真”强>
在AndroidManifest.xml文件的 <application>
标记内。
以下是我自己的清单文件中的示例:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:largeHeap="true">
答案 1 :(得分:1)
使用ViewHolder
逻辑。使用ViewHolder时,滚动时图像会替换为其他图像。
另外,我建议您使用GridView
来显示您说的项目。
以下是参考:http://developer.android.com/training/improving-layouts/smooth-scrolling.html
这是一个教程:http://www.learn2crack.com/2014/01/android-custom-gridview.html