2016-03-30 20 views
2

私はRecyclerViewで作業しています。カード上の画像に視差効果を追加したいと思います。 ParallaxEveryWhereライブラリを使用するとうまく動作しますが、手動で作成する必要があります。RecyclerViewの項目のViewHolderを取得する方法

問題は、アダプタからすべてのアイテムのViewHolderを取得したいということです。私はアイテムのViewholderを取得するためにすべてのRecyclerViewメソッドを試しましたが、それらのすべてがnullを返しました。あなたは通りのTextViewとImageViewのを持っている場合、私はそれのうちRecyclerViewの項目のViewHolderを取得するために解決策を探しています

+0

あなたの質問は明確ではないが、もう少し明確にしてください。 –

+0

アダプター内でカスタム・インターフェースを使用し、それをアクティビティーに実装することができます。これは、viewHolderのメンバーを取得する唯一の方法です。 –

+0

いくつかコードを教えてください。 –

答えて

1

アダプタだこれは、例えばRecyclerView

のスケルトン
public class YourAdapter extends RecyclerView.Adapter<YourAdapter.ViewHolder> { 

    private Context context; 
    public YourAdapter(Context context) { 
     this.context = context; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     View v = LayoutInflater.from(viewGroup.getContext()) 
       .inflate(R.layout.card_item, viewGroup, false); 
     ViewHolder viewHolder; 
     viewHolder = new ViewHolder(v); 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(final ViewHolder viewHolder, final int i) { 

     viewHolder.textView.setText("Text"); 
     viewHolder.imgView.setImageResource(R.drawable.image); 

    } 

    @Override 
    public int getItemCount() { 
     return 0; 
    } 

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

     public TextView textView; 
     public ImageView imgView; 
     public ViewHolder(View itemView) { 
      super(itemView); 

      textView = (TextView) itemView.findViewById(R.id.textView); 
      imgView = (ImageView) itemView.findViewById(R.id.imgView); 

     } 

    } 

} 

ですあなたのViewHolderの項目は、onBindViewHolder()の方法でこれらの項目にアクセスすることができます

+1

私はアダプターから**あなたに言った** –

0

上記のコードでは0が返されるので、0を返します。 vaそこでアダプタはある値を返します。

public class YourAdapter extends RecyclerView.Adapter<YourAdapter.ViewHolder> { 

     private Context context; 
     public YourAdapter(Context context) { 
      this.context = context; 
     } 

     @Override 
     public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
      View v = LayoutInflater.from(viewGroup.getContext()) 
        .inflate(R.layout.card_item, viewGroup, false); 
      ViewHolder viewHolder; 
      viewHolder = new ViewHolder(v); 
      return viewHolder; 
     } 

     @Override 
     public void onBindViewHolder(final ViewHolder viewHolder, final int i) { 

      viewHolder.textView.setText("Text"); 
      viewHolder.imgView.setImageResource(R.drawable.image); 

     } 

     @Override 
     public int getItemCount() { 
      return imgView.length; 
     } 

     public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

      public TextView textView; 
      public ImageView imgView; 
      public ViewHolder(View itemView) { 
       super(itemView); 

       textView = (TextView) itemView.findViewById(R.id.textView); 
       imgView = (ImageView) itemView.findViewById(R.id.imgView); 

      } 

     } 

    } 

私はあなたの問題はこれでsovedます希望...

関連する問題