2016-11-16 105 views
0

嗨MvvmCross/Xamarin離散事件,刷卡刷新佈局打破回收項目模板

我已經跑入周圍MvxRecyclerView和android.support.v4.widget.SwipeRefreshLayout圍繞一個問題。

  • Xamarin版本:7.0.1.3(Xamarin業務)
  • SDK工具版本:25.1.7
  • SDK平臺工具版本:24.0.1
  • SDK構建工具在Android上使用會出現此問題版本:23.0.3
  • MvvmCross V4.3.0。

這就是發生了什麼事。我有一個綁定到可觀察集合的MvxRecyclerView,並且有一個自定義模板。當我們點擊列表底部時,我也使用TemplateSelector顯示「加載單元格」。 MvxRecyclerList封裝在android.support.v4.widget.SwipeRefreshLayout中以實現刷新模式。

當結果加載到列表中時,它應該顯示爲應該顯示,回到列表並返回列表。單元格模板佈局看起來應該完全一樣。正如你可以看到下面。

enter image description here

然而,當我做一拉,刷新和我在等待最後的數據返回佈局是「破」,一切都在那裏,但它搞砸了。見下面

enter image description here

如果這是不奇怪的是,你這樣做是殘破交換每次細胞拉刷新。

enter image description here

有時沒有被破壞。最後要補充的是,這些單元格在回收時會修復它們。

我已經縮小了事實,即MvxRecyclerView包裝在SwipeRefreshLayout中,沒有我可以多次調用reload函數而沒有一次單元竊聽。

任何幫助或指針,將不勝感激。

UPDATE:ItemTemplate中的Xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:local="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="#fff"> 
<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="100dp"> 
    <Mvx.MvxImageView 
     android:id="@+id/car_item_template_image_view" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_gravity="center_vertical" 
     android:layout_marginLeft="10dp" 
     android:scaleType="centerCrop" 
     android:background="@drawable/image_placeholder" 
     local:MvxBind="ImageUrl MainImageUrl" /> 
    <RelativeLayout 
     android:orientation="vertical" 
     android:background="@color/white" 
     android:layout_width="fill_parent" 
     android:layout_height="80dp" 
     android:layout_marginLeft="10dp" 
     android:layout_gravity="center_vertical"> 
     <TextView 
      android:id="@+id/car_item_template_make_text" 
      android:text="Make" 
      android:layout_width="wrap_content" 
      android:layout_height="25dp" 
      android:textColor="@color/theme_blue" 
      android:fontFamily="sans-serif-light" 
      android:textSize="@dimen/car_item_template_title_text_size" 
      local:MvxBind="Text Make, Converter=EmptyStringCheck" 
      android:ellipsize="end" 
      android:singleLine="true" /> 
     <TextView 
      android:text="Model" 
      android:layout_width="@dimen/car_item_template_model_text_width" 
      android:layout_height="25dp" 
      android:layout_marginLeft="7dp" 
      android:textColor="@color/theme_blue" 
      android:layout_toRightOf="@id/car_item_template_make_text" 
      android:layout_toLeftOf="@+id/car_item_template_price_text" 
      android:fontFamily="sans-serif-light" 
      android:textSize="@dimen/car_item_template_title_text_size" 
      local:MvxBind="Text Model, Converter=EmptyStringCheck" 
      android:ellipsize="end" 
      android:singleLine="true" /> 
     <TextView 
      android:id="@+id/car_item_template_price_text" 
      android:text="Price" 
      android:layout_alignParentRight="true" 
      android:layout_alignTop="@+id/car_item_template_make_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="15dp" 
      android:textColor="@color/theme_blue" 
      android:fontFamily="sans-serif-light" 
      android:textSize="@dimen/car_item_template_title_text_size" 
      local:MvxBind="Text Price, Converter=IntToPrice" /> 
     <TextView 
      android:id="@+id/car_item_template_year_text" 
      android:layout_alignParentLeft="true" 
      android:layout_above="@+id/car_item_template_mileage_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Year" 
      android:textSize="@dimen/car_item_template_detail_text_size" 
      local:MvxBind="Text Year, Converter=EmptyShortCheck, ConverterParameter='No Year'" /> 
     <TextView 
      android:id="@+id/car_item_template_mileage_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_above="@+id/car_item_template_location_text" 
      android:layout_alignParentLeft="true" 
      android:text="Mileage" 
      android:textSize="@dimen/car_item_template_detail_text_size" 
      local:MvxBind="Text Mileage, Converter=IntToMileage, ConverterParameter='No Mileage'" /> 
     <TextView 
      android:id="@+id/car_item_template_location_text" 
      android:text="Location" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentLeft="true" 
      android:textSize="@dimen/car_item_template_detail_text_size" 
      local:MvxBind="Text Location, Converter=EmptyStringCheck, ConverterParameter='No Location'" /> 
    </RelativeLayout> 
</LinearLayout> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="1dp" 
    android:layout_alignParentBottom="true" 
    android:background="@drawable/generic_graydivider" /> 
</RelativeLayout> 
+0

安置自己的項目模板。 – Cheesebaron

+0

@Cheesebaron更新的問題。在增加模板xml –

+0

@Cheesebaron我現在正在做一個解決方法,請參閱下面的答案。我仍然不知道是什麼導致它:/ –

回答

0

因此,這是針對該問題的解決方法。正如您在上面的模板中看到的那樣,TextViews寬度全部設置爲wrap_content。我將其更改爲固定值,現在問題不再發生。

不幸的是我仍然不知道是什麼引起的名單中包含的SwipeRefreshLayout時這樣迴應:(但是這會爲現在要做的。