壁紙アプリケーションを開発しようとしています。アプリケーションが起動すると、アクティビティは gridView にカテゴリ (textView 上の画像と対応する名前) を表示します。カテゴリを選択すると、サブカテゴリに移動します。サブカテゴリ アクティビティでは、サブカテゴリの画像とそれに対応する名前が textVew に表示されます。問題は、サブカテゴリ アクティビティの画像が読み込まれないことです。画像をロードすることもあります。戻るボタンを押して、そのサブカテゴリをもう一度選択すると、3 つのモードの画像が読み込まれます。戻るボタンを押してサブカテゴリより選択すると、別の 3 つの画像 (合計 10 の画像) が読み込まれます。イメージはディスクに適切にキャッシュされます。これが私の構成です:
cacheDir = new File(Environment.getExternalStorageDirectory(),
"peakwallpapers/cache"); // --
// Create configuration for ImageLoader
config = new ImageLoaderConfiguration.Builder(this).enableLogging()
.discCache(new UnlimitedDiscCache(cacheDir))
.memoryCache(new UsingFreqLimitedMemoryCache(2000000))
.denyCacheImageMultipleSizesInMemory().threadPoolSize(10)
.threadPriority(Thread.MIN_PRIORITY + 2)
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.build(); // --
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.stub_image)
.showImageForEmptyUri(R.drawable.image_for_empty_url)
.cacheInMemory().cacheOnDisc().build();
imageLoader.init(config);
getView() メソッドは次のとおりです。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final View rowView;
final ViewHolder viewHolder = new ViewHolder();
if (convertView == null) {
rowView = getLayoutInflater().inflate(
R.layout.item_sub_category_grid, null);
viewHolder.imageView = (ImageView) rowView
.findViewById(R.id.image_item_sub_category);
viewHolder.textView = (TextView) rowView
.findViewById(R.id.text_item_sub_cat_desc);
rowView.setTag(viewHolder);
} else {
rowView = (View) convertView;
}
ViewHolder holder = (ViewHolder) rowView.getTag();
holder.textView.setText(wpSubCategories.get(position)
.getSubCategoryName());
imageLoader.displayImage(imageUrls[position], viewHolder.imageView,
options, new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted() {
showLoading();
}
@Override
public void onLoadingComplete(Bitmap loadedImage) {
Animation anim = AnimationUtils.loadAnimation(
SubCategoryGridActivity.this,
R.anim.fade_in);
viewHolder.imageView.setAnimation(anim);
anim.start();
}
});
return rowView;
}
}
私のグリッドレイアウト: sub_category_grid.xml :
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview_sub_category"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:horizontalSpacing="4dip"
android:numColumns="2"
android:verticalSpacing="4dip" />
およびグリッドの私のアイテム: item_sub_category_grid.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frame_l_item_sub_category_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight=".5"
android:background="@drawable/textlines" >
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/image_item_sub_category"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:contentDescription="@string/descr_image"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/text_item_sub_cat_desc"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@drawable/cat_bg"
android:gravity="center_horizontal"
android:text="TextView"
android:textColorHighlight="#656565"
android:typeface="monospace" >
</TextView>
</FrameLayout>
注意: LogCat ではエラーは表示されません。