預期的行爲: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項目的點擊位置。不管我滾動的距離有多遠,如果我點擊第三個可見項目,就好像我擊中頂部的第三個絕對項目一樣。
我該如何解決這個問題,以便正確的項目被檢索?
正要編輯該問題。使用'itemPosition = MyViewHolder.this.getAdapterPosition();'解決了這個問題。 – fgoogle
@fgoogle問題解決了嗎? –
是的,你可以看到我接受了你的答案。 – fgoogle