2016-11-15 12 views
1

recyclerviewの特定のアイテムのViewHolderを所定の位置にのみ取得する方法はありますか?Recyclerviewの特定のアイテムのViewHolderを得る方法

のようなものgetViewHolder(position);

public MyViewHolder getViewHolder(int position){ 
    MyViewHolder holder = null; 
    /** 
     Find ViewHolder here... 
      If Found initialize the holder.. 
       holder = ? 
    **/ 
    return holder; 
} 

この関数は、私のアダプタクラスであり、私はので、私は私のカスタム・アイテムeg. holder.setText("Hello World");の私の見解のいずれかの値を変更することができます項目のViewHolderを取得する方法を探しています、私は株式よ、私はそれをする方法を見つけることができない、私は検索しようとしたが、それらのどれも私を助けない。

誰でも?

+0

投票ダウンの理由をコメントしてください。 – Polar

+0

これは、特定のビューホールダーのために役立つかもしれません:http://stackoverflow.com/a/40240599/1263362 – Sayem

+0

@Sayem - リンクをありがとうございますが、どうすれば私の問題に役立つか説明できますか?ありがとうございました。 – Polar

答えて

0

これはViewHolderの仕組みではありません。 ViewHolderはあなたが作成したレイアウトの保持者です。 ViewHolderは自動的に再利用可能なので、100個の項目がある場合、アンドロイドは画面に表示されるViewHoldersのほんの少しではなく、100のViewHoldersを作成しません。 RecyclerViewをスクロールすると、非表示のアイテムのViewHolderが再利用されます。あなたはここでの方法で自動的にonBindViewHolder

を通過した私は、それはあなたを助けることを願っています例

@Override 
public void onBindViewHolder(final ViewHolder holder, int position) { 
    holder.textViewTitle.setText(data.get(position).title); 
    holder.textViewContent.setText(data.get(position).content); 

    Context context = holder.button.getContext();  
    holder.button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(context, "you clicked the button!", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
+1

ここで私は、人々がAndroidで悪い練習をしないことを確認したいだけです。あなたがダウンボートする前に、あなたは質問者の問題を理解し、より良いアプローチを作成する必要があります。 – HendraWD

0
public static RecyclerView.ViewHolder getViewHolder(View view) { 
    RecyclerView rv = getParentRecyclerView(view); 
    View rvChild = getParentViewHolderItemView(view); 

    if (rv != null && rvChild != null) { 
     return rv.getChildViewHolder(rvChild); 
    } else { 
     return null; 
    } 
} 

あるViewHolder上のデータを変更する必要があります。 このリンクも参考にしてください。

http://www.programcreek.com/java-api-examples/index.php?class=android.support.v7.widget.RecyclerView&method=getChildViewHolder

+0

メソッド 'getParentRecyclerView'と' getParentViewHolderItemView'を解決できません。あなたのコードに基づいて戻り値のviewHolderが私が探しているものだとどうやって伝えることができますか? – Polar

+0

メソッドのビューを渡して、尊重されたビューホルダーを取得しています。 –

+0

ですが、 'getParentRecyclerView'と' getParentViewHolderItemView'は解決できません。 – Polar

関連する問題