在列表视图中结束多选删除列表项填充

在列表视图中结束多选删除列表项填充

问题描述:

我只能用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文件中定义?

终于找到了解决方案!

问题奠定了布局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" 

预奇巧设备解决了这个问题。