我只需要一种在列表视图中使用的所有imageview(见下文)上显示默认图片的方法。
此布局由适配器使用,因此在此布局上不会调用setContentView函数。我认为这会导致问题(默认图像不会出现)。我该如何解决?
图片defaultpic.png位于drawable文件夹中,为100x100px。
我的代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="0dp"
android:paddingRight="0dp"
tools:context=".MainActivity"
android:background="#222222"
android:paddingTop="2dp"
android:paddingBottom="2dp">
<TextView
android:id="@+id/profile_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Title"
android:textColor="#fcdb8c"
android:background="#222222"
android:textStyle="normal"
android:textSize="15sp"
android:layout_alignParentTop="true"
android:lines="1"
android:scrollHorizontally="true"
android:ellipsize="end"
android:paddingRight="40dp"
android:paddingLeft="2dp" />
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/profile"
android:scaleType = "fitXY"
android:src="@drawable/defaultpic"
android:background="#151515"
android:padding="1dp" />
</RelativeLayout>
@Override
public View getView(View convertView, ViewGroup parent) {
RelativeLayout profileLay = (RelativeLayout)profileInf.inflate
(R.layout.profile_layout, parent, false);
TextView profileView = (TextView)profileLay.findViewById(R.id.profile_name);
ImageView coverView = (ImageView)profileLay.findViewById(R.id.profile);
profileView.setText(currProfile.getName());
Drawable img = Drawable.createFromPath(currProfile.getCover());
coverView.setImageDrawable(img);
return profileLay;
}
答案 0 :(得分:1)
您为listviewitem生成的布局具有图片
<RelativeLayout...>
<ImageView android:id="@+id/profile" android:src="@drawable/defaultpic" ... />
</RelativeLayout>
当创建listviewitem时,您会立即覆盖imageview中的图片
@Override
public View getView(View convertView, ViewGroup parent) {
...
ImageView coverView = (ImageView)profileLay.findViewById(R.id.profile);
Drawable img = Drawable.createFromPath(currProfile.getCover());
coverView.setImageDrawable(img);
...
因此,您没有看到默认图片
答案 1 :(得分:1)
正如k3b所说: 您为listviewitem生成的布局具有图像 因此,您没有看到默认图片。
纠正这个问题的方法是添加一个if语句。
ImageView coverView = (ImageView)profileLay.findViewById(R.id.profile);
if (Drawable.createFromPath(currProfile.getCover()) == null) {
Drawable img = Drawable.createFromPath(currProfile.getCover());
coverView.setImageDrawable(img);
}
这将导致它仅加载配置文件封面(如果它不为空),但如果是,则将使用默认配置文件图像。