我在ImageViews
中有3 ListView row
,但由于某种原因他们没有出现。
我使用相同的功能来检索应用程序的另一部分中的图像,它可以获得没有问题的图像。因此,检索图像位图的方法不是问题。
还有什么可能导致图片无法显示在ImageView
中?我调试了,File
不是null。
请帮忙!
在getView方法中显示图像的BaseAdapter
try {
if (user.getGameOwned().size() > 0) {
String coverPhotoName = user.getGameOwned().get(0).getCoverPhoto();
if (coverPhotoName != null) {
ImageHelper.loadOrDownloadGameCover(mContext, coverPhotoName,
holder.iv2, holder.gameCoverSpinner1);
}
}
}
catch (Exception e) { e.printStackTrace(); }
try {
if (user.getGameOwned().size() > 1) {
String coverPhotoName = user.getGameOwned().get(1).getCoverPhoto();
if (coverPhotoName != null) {
ImageHelper.loadOrDownloadGameCover(mContext, coverPhotoName,
holder.iv3, holder.gameCoverSpinner2);
}
}
}
catch (Exception e) { e.printStackTrace(); }
try {
if (user.getGameOwned().size() > 2) {
String coverPhotoName = user.getGameOwned().get(2).getCoverPhoto();
if (coverPhotoName != null) {
ImageHelper.loadOrDownloadGameCover(mContext, coverPhotoName,
holder.iv4, holder.gameCoverSpinner3);
}
}
}
catch (Exception e) { e.printStackTrace(); }
将图像提取为位图的方法
public static void loadOrDownloadGameCover(final Context context, final String coverPhotoName,
ImageView gameCover, final ProgressBar loadingSpinner) {
if (isGameCoverDownloaded(context, coverPhotoName)) {
loadingSpinner.setVisibility(View.GONE);
try {
File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES),
coverPhotoName);
gameCover.setImageBitmap(BitmapFactory.decodeFile(file.toString()));
}
catch (Exception e) { e.printStackTrace(); }
}
else {
String uri = GlobalVars.URL_GAME_COVER_DOWNLOAD + coverPhotoName;
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.placeholder)
.showImageForEmptyUri(R.drawable.placeholder)
.showImageOnFail(R.drawable.placeholder)
.build();
ImageLoader.getInstance().displayImage(uri, gameCover, options, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
loadingSpinner.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
loadingSpinner.setVisibility(View.GONE);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
loadingSpinner.setVisibility(View.GONE);
saveGameCover(context, coverPhotoName, loadedImage);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
loadingSpinner.setVisibility(View.GONE);
}
});
}
}
ListView行的XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="10dp"
android:paddingRight="10dp" >
<LinearLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical"
android:background="@drawable/card_white_selector"
android:padding="20dp" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="30dp" >
<ImageView
android:id="@+id/avatar"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginRight="14dp"
android:adjustViewBounds="true"
android:background="@drawable/avatar_bg" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="vertical" >
<com.walintukai.lovelup.widgets.CustomTextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/CardUsernameTextView" />
<com.walintukai.lovelup.widgets.CustomTextView
android:id="@+id/details"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/CardUserDetailsTextView" />
<com.walintukai.lovelup.widgets.CustomTextView
android:id="@+id/location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/CardUserDetailsTextView" />
</LinearLayout>
</LinearLayout>
<com.walintukai.lovelup.widgets.CustomTextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#666"
android:textSize="16sp" />
<LinearLayout
android:id="@+id/games_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center_horizontal">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/cover_one"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:adjustViewBounds="true"
android:layout_gravity="center_vertical"/>
<ProgressBar
android:id="@+id/cover_one_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@android:style/Widget.ProgressBar.Small"
android:visibility="gone" />
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/cover_two"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:adjustViewBounds="true"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"/>
<ProgressBar
android:id="@+id/cover_two_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@android:style/Widget.ProgressBar.Small"
android:visibility="gone" />
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/cover_three"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:adjustViewBounds="true"
android:layout_gravity="center_vertical"/>
<ProgressBar
android:id="@+id/cover_three_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@android:style/Widget.ProgressBar.Small"
android:visibility="gone" />
</FrameLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
答案 0 :(得分:1)
问题在于您的布局XML。仅当立即父级为layout_weight
时才能使用LinearLayout
参数,但ImageView
的直接父级为FrameLayout
。尝试将layout_weight
值移至FrameLayout
,如下所示:
<LinearLayout
android:id="@+id/games_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center_horizontal">
<FrameLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<ImageView
android:id="@+id/cover_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:layout_gravity="center_vertical"/>
<ProgressBar
android:id="@+id/cover_one_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@android:style/Widget.ProgressBar.Small"
android:visibility="gone" />
</FrameLayout>
<FrameLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<ImageView
android:id="@+id/cover_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"/>
<ProgressBar
android:id="@+id/cover_two_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@android:style/Widget.ProgressBar.Small"
android:visibility="gone" />
</FrameLayout>
<FrameLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<ImageView
android:id="@+id/cover_three"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:layout_gravity="center_vertical"/>
<ProgressBar
android:id="@+id/cover_three_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@android:style/Widget.ProgressBar.Small"
android:visibility="gone" />
</FrameLayout>
</LinearLayout>
您可能需要更多地使用ImageView
参数来使它们看起来正确,但希望它们至少会出现在现在。