2016-08-18 1 views
0

コールバック関数でビュー所有者を渡すことによって、recyclerビューのビューアの値を別のクラスに累積しようとしています。実行時に、その値を持つ項目が表示されますが、これらの値をビュー所有者から抽出するにはどうすればよいですか?コールバックメソッドでtextview値を抽出したいと思います。これをどのように達成するのですか?コールバッククラスのビューアアイテムを取得する方法

ここに私のviewholderクラスの実装は

public class CommentViewHolder : RecyclerView.ViewHolder, IItemTouchHelperViewHolder 
    { 
     public TextView username; 
     public ImageView userphoto; 
     public TextView time; 
     public TextView comment; 
     public View _itemView; 
     public CommentViewHolder(View view) 
      : base(view) 
     { 
      _itemView = view; 
     } 


     public void OnItemClear() 
     { 
      _itemView.SetBackgroundColor(Color.White); 
     } 

     public void OnItemSelected() 
     { 
      _itemView.SetBackgroundColor(Color.LightGray); 
     } 
    } 

です。ここviewholderのgetコールバックメソッドです。

public override int GetMovementFlags(Android.Support.V7.Widget.RecyclerView recyclerView, Android.Support.V7.Widget.RecyclerView.ViewHolder viewHolder) 
    { 

     if (recyclerView.GetLayoutManager() is GridLayoutManager) 
     { 
      //do something 
     } 
     else 
     { 
      //do something 
     } 
    } 
+0

関連するコードサンプルを投稿してください、それはせずに、あなたの質問に答えるのは難しいですViewHolderの実装を見てください。 – Egor

+0

@Egorコードで質問を更新しました。 –

答えて

1

コールバックはあなたにViewHolderを与えるように見えますので、あなたが提供ViewHolderまでの値を得ることができる必要があります:

if(viewHolder instanceof CommentViewHolder) { 
    CommentViewHolder holder = (CommentViewHolder) viewHolder; 
    String username = holder.username.getText(); 
} 
+0

ですが、usernameはビュー所有者オブジェクトのメソッドではありません。私がそれを行うとコンパイラエラーが発生する –

+0

Ah、そう、返された 'ViewHolder'が' CommentViewHolder'のインスタンスであるかどうかをチェックしてください。コードを更新しました。 – Bryan

+0

ああ私はそれが正しい方法だと思う。私はそれを撃つだろう。 –

関連する問題