0

我只能用JellyBean設備(Samsung Galaxy S3上的Android 4.1.2)重建此行爲。用KitKat或棒棒糖這個問題沒有發生。在列表視圖中結束多選刪除列表項填充

我有一個可能多選的項目列表的RecyclerView。當我在列表中選擇幾個項目(多選被激活)並通過單擊工具欄左上角的圖標再次退出時,列表中的某些項目會丟失其填充。奇怪的是,它並不總是發生在同一件物品上,也不是每次都發生在同一件物品上。當我將該項目從顯示屏滾動出來並將其滾動回查看時,填充返回並且正確。

enter image description here

後,我已改寫了onRebind()方法,並重新施加了填充到該項目的問題沒有發生,因爲多了 - 但是 - 它stll發生。

@Override 
protected void onRebind() { 
    super.onRebind(); 
    mListItem.setPadding(20, 20, 20, 20); 
} 

這IY我DocumentHolder類:

public class DocumentHolder extends SwappingHolder implements View.OnClickListener, View.OnLongClickListener { 
    private final RelativeLayout mListItem; 
    private final TextView mNameTextView; 
    private final ImageView mAttachmentView; 
    private final TextView mTitleTextView; 
    private final TextView mDateView; 
    private final ImageView mTypeView; 
    private Document mDocument; 
    private boolean mIsAvailableOffline; 

    @Override 
    protected void onRebind() { 
     super.onRebind(); 
     mListItem.setPadding(20, 20, 20, 20); 
    } 

    public DocumentHolder(View itemView, MultiSelector multiSelector) { 
     super(itemView, multiSelector); 

     mListItem = (RelativeLayout) itemView.findViewById(R.id.list_item_doc); 
     mNameTextView = (TextView) itemView.findViewById(R.id.list_item_document_name); 
     mAttachmentView = (ImageView) itemView.findViewById(R.id.list_item_document_attachment); 
     mDateView = (TextView) itemView.findViewById(R.id.list_item_document_date); 
     mTitleTextView = (TextView) itemView.findViewById(R.id.list_item_document_title); 
     mTypeView = (ImageView) itemView.findViewById(R.id.list_item_document_type); 

     itemView.setOnClickListener(this); 
     itemView.setOnLongClickListener(this); 
     itemView.setLongClickable(true); 
     itemView.setLongClickable(true); 
    } 

    public void bindDocument(Document document) { 
     mDocument = document; 
     mNameTextView.setText(document.getDisplayName(mFolderType)); 
     mAttachmentView.setVisibility(document.isHasAttachments() ? View.VISIBLE : View.INVISIBLE); 
     mTitleTextView.setText(document.getTitle()); 

     int iconId = IconHelper.getListItemIcon(document, true); 
     mTypeView.setImageResource(iconId); 

     mDateView.setText(DateFormatter.getShortFormattedDate(document.getReceivingDate())); 

     mNameTextView.setTextAppearance(mContext, R.style.ListItemSenderUnread); 
     mTitleTextView.setTextAppearance(mContext, R.style.ListItemTitleUnread); 
     mDateView.setTextAppearance(mContext, R.style.ListItemDateUnread); 

     // offline style 
     mIsAvailableOffline = mAttachmentService.isAvailableOffline(mDocument.getId()); 
     if (mOfflineMode) { 
      if (!mIsAvailableOffline) { 
       mNameTextView.setTextAppearance(mContext, R.style.ListItemSenderOffline); 
       mTitleTextView.setTextAppearance(mContext, R.style.ListItemTitleOffline); 
       mDateView.setTextAppearance(mContext, R.style.ListItemDateOffline); 
      } 
     } 
    } 

    @Override 
    public void onClick(View v) { 
     if (!mOfflineMode || mIsAvailableOffline) { 
      mItemListAdapterCallbacks.onDocumentClick(this); 
     } 
    } 

    @Override 
    public boolean onLongClick(View v) { 
     if (!mOfflineMode) { 
      mItemListAdapterCallbacks.onDocumentLongClick(this); 
     } 
     return true; 
    } 

    public Document getDocument() { 
     return mDocument; 
    } 
} 

而列表項這個佈局XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/list_item_doc" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?android:attr/selectableItemBackground" 
    android:padding="12dp"> 

    <TextView 
     android:id="@+id/list_item_document_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_toLeftOf="@+id/list_item_document_attachment" 
     android:ellipsize="end" 
     android:gravity="center_vertical" 
     android:minHeight="24dp" 
     android:singleLine="true" /> 

    <ImageView 
     android:id="@+id/list_item_document_attachment" 
     android:layout_width="24dp" 
     android:layout_height="24dp" 
     android:layout_alignBottom="@id/list_item_document_name" 
     android:layout_toLeftOf="@+id/list_item_document_date" 
     android:padding="4dp" 
     android:src="@drawable/ic_attachment_gray" /> 

    <TextView 
     android:id="@+id/list_item_document_date" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@id/list_item_document_name" 
     android:layout_alignParentRight="true" 
     android:ellipsize="end" 
     android:gravity="center_vertical" 
     android:minHeight="24dp" 
     android:singleLine="true" /> 

    <TextView 
     android:id="@+id/list_item_document_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/list_item_document_type" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/list_item_document_name" 
     android:layout_toLeftOf="@+id/list_item_document_type" 
     android:ellipsize="end" 
     android:gravity="center_vertical" 
     android:minHeight="24dp" 
     android:paddingTop="5dp" 
     android:singleLine="true" /> 

    <ImageView 
     android:id="@+id/list_item_document_type" 
     android:layout_width="24dp" 
     android:layout_height="24dp" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/list_item_document_date" 
     android:src="@drawable/ic_folder" /> 

</RelativeLayout> 

的填充仍然是12dp如何解決行爲在退出多選模式後在佈局XML文件中定義?

回答

0

終於找到了解決方案!

問題奠定了佈局XML文件中:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/list_item_doc" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?android:attr/selectableItemBackground" 
    android:padding="12dp"> 

background屬性apparenly不適用於果凍豆設備。從

android:background="?android:attr/selectableItemBackground" 

更改值

android:background="@color/myBackgroundColor" 

預奇巧設備解決了這個問題。