我必須在列表中顯示足球運動員列表。沒有問題,一切正常,但國籍的小旗正在消失,而我滾動我的名單。Android ExpandableListView項目圖像消失
這是它應該是什麼樣子:list item player OK
這裏是結果,我有些滾動之後有:list item player NOK
我也有一個球員和一個又一個的肖像的圖片顯示襯衫這工作正常。
下面是我的一些代碼部分(我只把它的某些部分,以減少大小和收起什麼工作,但隨時索要更多,如果你需要):
我的項目列表佈局(局部佈局,你不會得到相同的結果作爲形象展示):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="3dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="3dp"
android:orientation="horizontal" >
<ImageView
android:id="@+id/portrait"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="@drawable/portrait_default" />
<LinearLayout
android:id="@+id/nationalityLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal" >
<ImageView
android:id="@+id/logoNationality"
android:layout_width="13dp"
android:layout_height="13dp"
android:layout_marginRight="3dp" />
<TextView
android:id="@+id/nationality"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="13dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/shirt"
android:layout_width="40dp"
android:layout_height="32dp"
android:gravity="center_horizontal" >
<TextView
android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp" />
</LinearLayout>
</LinearLayout>
我有我的項目持有人:
private class ChildViewHolder {
public ImageView portrait;
public ImageView logoNationality;
public TextView nationality;
public LinearLayout nationalityLayout;
public LinearLayout shirt;
public TextView number;
public void reset() {
portrait.setImageBitmap(null);
portrait.setBackgroundResource(R.drawable.portrait_default);
nationalityLayout.setVisibility(View.VISIBLE);
nationality.setText("");
number.setText("");
}
}
而且從我的適配器getChildView(帶標誌是一張地圖,而把在適配器列表和playerShirt一個BitmapDrawable之前加載)項目填寫:
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ChildViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.liste_item, null);
holder = new ChildViewHolder();
holder.portrait = (ImageView) convertView.findViewById(R.id.portrait);
holder.nationalityLayout = (LinearLayout) convertView.findViewById(R.id.nationalityLayout);
holder.logoNationality = (ImageView) convertView.findViewById(R.id.logoNationality);
holder.nationality = (TextView) convertView.findViewById(R.id.nationality);
holder.shirt= (LinearLayout) convertView.findViewById(R.id.shirt);
holder.number = (TextView) convertView.findViewById(R.id.number);
convertView.setTag(holder);
} else {
holder = (ChildViewHolder) convertView.getTag();
holder.reset();
}
FootPlayer player = children.get(groupPosition).get(childPosition);
// Doing nothing with portrait for now
if (player.getNationality() != null) {
holder.nationalityLayout.setVisibility(View.VISIBLE);
holder.nationality.setText(player.getNationality());
if (player.getNatImg() != null) {
holder.logoNationality.setImageDrawable(flags.get(player.getNatImg()));
} else {
holder.logoNationality.setVisibility(View.INVISIBLE);
}
} else {
holder.nationalityLayout.setVisibility(View.GONE);
}
holder.shirt.setBackgroundDrawable(playerShirt);
holder.number.setText(String.valueOf(player.getNumber()));
return convertView;
}
眼下,標誌出現在列表的開頭,證明我說的國旗地圖正確充滿我的圖片,但是當我向下滾動時,他們開始隨機消失,最終沒有一個人出現了。
如此重要的要點是:
- 我的標誌地圖正確充滿BitmapDrawable(和正確的鍵)
- 我playerShirt也是BitmapDrawable但不會消失,因爲國旗做
- 我已經試圖使用setBitmapImage而不是setBitmapDrawable來設置標誌圖像(也設置背景爲我目前正在做的襯衫)
- 我試着用可繪製的res圖像和我有相同的結果
- 我知道,我通過我的,如果條件的旗號,正確
有關此問題的任何幫助將不勝感激。
咩。我很盲目。非常感謝! – 2015-03-13 14:01:28