2016-09-16 4 views
-1

Целевого поведение:ViewHolder в recyclerView регистр видимой позиции просмотра и не абсолютное положение вида

Здравствуй Я использую recyclerView, чтобы отобразить сетку изображения, загруженную из списка <> сохраненного в ViewAdapter. Когда пользователь нажимает на изображение, создается новый фрагмент и присваивается в качестве аргумента соответствующий элемент в списке <>. Я делаю это с этим кодом

private class ShowHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ 
//holder code... 

     @Override 
     public void onClick(View view) { 
      int itemPosition = mRecyclerView.indexOfChild(view); 

      Fragment newDetail = DetailFragment.newInstance(mShowAdapter.getList().get(itemPosition)); 
      //launch Fragment 
     } 
    } 

Это: mShowAdapter.getList().get(itemPosition) вернуть товар, который будет передан из списка <>. Это отлично работает для любого элемента в представлении, но только если я НЕ прокручиваю вниз.

Исправлена ​​ошибка:

Когда я прокручиваю вниз несколько страниц, и я щелкните элемент, неправильная деталь извлекается из списка. Например, допустим, я нажимаю первый видимый элемент после прокрутки нескольких страниц. Элемент, полученный из списка, на самом деле является первым элементом в списке <>, а не 27-м.

Это происходит потому, что recyclerView регистрирует положение клика относительно элементов VISIBLE. Не имеет значения, как далеко вниз я прокручиваю, если я нажимаю третий видимый элемент, это то же самое, что если бы я попал в третий абсолютный элемент вверху.

Как исправить это, чтобы получить правильный элемент?

ответ

1

попробовать

int itemPosition = getAdapterPosition(); 
+0

Сейчас вот-вот должен был отредактировать вопрос. Использование 'int itemPosition = MyViewHolder.this.getAdapterPosition(); 'решает проблему. – fgoogle

+0

Проблема @fgoogle решена? –

+0

Да, как вы можете видеть, я принял ваш ответ. – fgoogle

0

попробуйте установить onclick прослушиватель в onBindViewHolder().

+0

Разве это не очень неприхотлива производительности? – fgoogle