2016-03-30 3 views
2

Я работаю над RecyclerView, и я хочу добавить эффект параллакса к моим изображениям на картах. Если я использую библиотеку ParallaxEveryWhere, она работает нормально, но я хочу создать ее вручную.Как получить ViewHolder элементов RecyclerView

Теперь проблема в том, что я хочу получить ViewHolder из всех элементов из моего адаптера. Я пробовал все методы RecyclerView, чтобы получить «Захват» элемента, но все они вернули null.

Я ищу решение, чтобы получить ViewHolder из элементов в RecyclerView из него это адаптер

+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); 

     } 

    } 

} 

Для примера, если у вас есть TextView и ImageView, как Элементы в вашем ViewHolder, вы можете получить доступ к этим элементам в onBindViewHolder() метод

+1

Я сказал вам ** из адаптера ** –

0

В приведенном выше коде есть возврат 0, так что он вернется 0, положил несколько va lue там, поэтому адаптер возвращает некоторое значение.

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 с этим ..

Смежные вопросы