スピナーのテキストの横にネットワークからロードした画像 (google volley を使用) を表示したいのですが、なぜか表示されません。実際、アダプターの getView メソッドは、convertView を null にして、Android SDK 内の何らかの測定メソッドによって何度も呼び出されます。
私のアダプターは次のようになります。
public class CategoriesSpinnerAdapter extends ArrayAdapter<Category> {
private LayoutInflater mLayoutInflater;
public CategoriesSpinnerAdapter(Context context, List<Category> objects) {
super(context, 0, objects);
mLayoutInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.item_spinner_category, parent, false);
}
final TextView categoryTitle = (TextView) convertView.findViewById(R.id.scategory_title);
categoryTitle.setText(getItem(position).getName());
final NetworkImageView categoryImage = (NetworkImageView) convertView.findViewById(R.id.scategory_image);
ImageUtils.load(categoryImage, getItem(position).getIcon());
return convertView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.simple_spinner_category, parent, false);
}
final TextView categoryTitle = (TextView) convertView.findViewById(R.id.spinner_item_title);
categoryTitle.setText(getItem(position).getName());
final NetworkImageView categoryImage = (NetworkImageView) convertView.findViewById(R.id.spinner_item_image);
ImageUtils.load(categoryImage, getItem(position).getIcon());
return convertView;
}
}
item_spinner_category.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:background="@drawable/top_bar_select_icon" />
<TextView
android:id="@+id/scategory_title"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:textColor="@android:color/white" />
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/scategory_image"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_alignParentRight="true"
android:layout_marginRight="3dp"
android:layout_centerVertical="true"
android:src="@drawable/spinner_games_icon"/>
</RelativeLayout>
simple_spinner_category.xml :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/spinner_item_title"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:textSize="14sp"
android:gravity="center"
android:textColor="@android:color/white"
android:background="@drawable/bottom_button_selector"/>
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/spinner_item_image"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_alignParentRight="true"
android:layout_marginRight="3dp"
android:layout_centerVertical="true" />
</RelativeLayout>
R.id.scategory_image の静的イメージは、おそらく Volley がネットワーク イメージをダウンロードするまでの短い期間表示されます。getDropDownView は適切に動作し、画像はドロップダウン ビューのテキストの横に表示されますが、これはメイン ビューでは発生しないようです。
ここで何が起こる可能性がありますか?