-1

ImageView.setImageResource(int id);を表示していOutOfMemoryErrorます。私は実際にTableLayout追加しているという点TableRowで、各行に画像を設定しています。これはすでにプロジェクトのリソースフォルダーにあり、でそれらの画像を参照していresource_idます。

private void addItems() {
    table.removeAllViews();
    Random rand = new Random();

    for (int i = 0; i < 20; i++) {
        TableRow row = new TableRow(getActivity());
        table.addView(row);

        RelativeLayout profile = (RelativeLayout) getLayoutInflater(null).inflate(R.layout.buddyname, null);
        TextView name = (TextView) profile.findViewById(R.id.name);
        name.setText(randomNames[i]);

        ImageView photo = (ImageView) profile.findViewById(R.id.photo);
        photo.setImageResource(randomPhoto[new Random().nextInt(randomPhoto.length - 1)]);
        row.addView(profile);
    }
}  

table.removeAllViews();それでも機能しないのですが、画像リソースがヒープに何度も読み込まれ、ヒープをクリアしていないためだと思いますか?以前に読み込まれた画像を参照できますか?解決策はありますか?

4

1 に答える 1

1

バディネーム?連絡先リストのようです。その場合は、代わりに ListView を使用してください。表示されている要素を動的にロードします。20 テーブル行は確かに多いです。

于 2013-03-18T10:48:33.647 に答える