2017-02-11 8 views
0

RecyclerView行のLinearLayoutを置き換えようとしていますが、すべてのアイテムの最後の行だけが置き換えられています。 TypePlayerBalanceItemTypes.Sessionある場合ので、私は新しいBalancePlayerSessionDetailedフラグメントをインスタンス化し、ID layoutBalancePlayerSessionDetailedLinearLayoutを置き換える - Payment(ブルードルのアイコン)とSession(黄色のカジノチップのアイコン) - 私のRecyclerViewアイテムの2種類があるでLinearLayoutをRecyclerViewのフラグメントに置き換える

Layoutに存在します。 OnCreateViewHolderにはSessionDetailedというプロパティにLayoutが割り当てられています。ただし、一番上の行だけが置き換えられます。 RecyclerViewが使用

public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position) 
     { 
      PlayerBalanceRecycleView view = holder as PlayerBalanceRecycleView; 
      var item = mItems[position]; 

      //view.Type.Text = item.Type.Substring(0, 1); 
      view.Date.Text = item.CreationDate.ToString("dd/MM"); 
      view.Result.Text = item.Amount.ToString("N0", new CultureInfo("en-US")); 
      view.Total.Text = item.Balance.ToString("N0", new CultureInfo("en-US")); 

      //var orange = "#FF7300"; 
      if (item.Type == PlayerBalanceItemTypes.Payment) 
      { 
       view.Icon.SetImageDrawable(mActivity.Resources.GetDrawable(Resource.Drawable.ic_money_medium_blue)); 
       view.Result.SetTextColor(mActivity.Resources.GetColor(Resource.Color.orange)); 
      } 
      else if(item.Type == PlayerBalanceItemTypes.Session) 
      { 
       view.Icon.SetImageDrawable(mActivity.Resources.GetDrawable(Resource.Drawable.ic_chips_medium)); 

       var frag = new BalancePlayerSessionDetailed(mActivity, -1); 
       var trans = mFragmentManager.BeginTransaction(); 
       trans.Replace(view.SessionDetailed.Id, frag); 
       //trans.Replace(Resource.Id.layoutBalancePlayerSessionDetailed, frag); 
       trans.Commit(); 
      } 
      if (item.Type == PlayerBalanceItemTypes.InitialDebt) view.Date.Visibility = ViewStates.Invisible; 

      //view.SessionDetailed.Visibility = ViewStates.Gone; 
     } 

レイアウト:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minWidth="25px" 
    android:minHeight="25px"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:minWidth="46px" 
     android:minHeight="46px" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/linearLayout2" 
     android:layout_margin="5dp" 
     android:background="#FFFFFF"> 
     <LinearLayout 
      android:orientation="horizontal" 
      android:minHeight="46dp" 
      android:weightSum="100" 
      android:background="?android:attr/selectableItemBackground" 
      android:clickable="true" 
      android:id="@+id/layoutPlayerBalance" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
      <LinearLayout 
       android:orientation="vertical" 
       android:minWidth="25px" 
       android:minHeight="25px" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:id="@+id/linearLayout3" 
       android:layout_weight="5" 
       android:gravity="center"> 
       <ImageView 
        android:src="@android:drawable/ic_menu_gallery" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:id="@+id/imageViewPlayerBalanceType" /> 
      </LinearLayout> 
      <TextView 
       android:text="06/07 23:25" 
       android:gravity="center" 
       android:id="@+id/textBalancePlayerDate" 
       android:layout_width="0dp" 
       android:layout_weight="25" 
       android:layout_height="match_parent" 
       android:textSize="20dp" 
       android:singleLine="true" 
       android:textColor="@color/grey" /> 
      <TextView 
       android:text="Result" 
       android:gravity="right|center_vertical" 
       android:id="@+id/textBalancePlayerResult" 
       android:layout_width="0dp" 
       android:layout_weight="35" 
       android:layout_height="match_parent" 
       android:textSize="28dp" 
       android:singleLine="true" 
       android:textColor="@color/blue" 
       android:paddingLeft="5dp" /> 
      <TextView 
       android:text="Total" 
       android:gravity="right|center_vertical" 
       android:id="@+id/textBalancePlayerTotal" 
       android:layout_width="0dp" 
       android:layout_weight="35" 
       android:layout_height="match_parent" 
       android:textSize="20dp" 
       android:textColor="@color/grey" 
       android:singleLine="true" 
       android:paddingRight="10dp" /> 
     </LinearLayout> 
    </LinearLayout> 
    <!-- I'M REPLACING THIS LINEAR LAYOUT --> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_margin="10dp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/layoutBalancePlayerSessionDetailed" /> 
</LinearLayout> 

現在の結果: enter image description here

期待される結果:enter image description here

なぜトップを置き換えるだけ可視この行/今はSession行ではなく

答えて

0

は、この記事のメソッドを使用して、それを解決:私のOnBindViewHolderFragment replacing in RecyclerView item

をコードは次のようになります。

int containerId = view.SessionDetailed.Id; 
       var oldFrag = mActivity.FragmentManager.FindFragmentById(containerId); 
       if (oldFrag != null) mActivity.FragmentManager.BeginTransaction().Remove(oldFrag).Commit(); 

       int newContainerId = DateTime.Now.Millisecond; 
       view.SessionDetailed.Id = newContainerId; 

       var frag = new BalancePlayerSessionDetailed(mActivity, -1); 
       var trans = mFragmentManager.BeginTransaction(); 
       trans.Replace(view.SessionDetailed.Id, frag); 
       //trans.Replace(Resource.Id.layoutBalancePlayerSessionDetailed, frag); 
       trans.Commit(); 
関連する問題