如何从onCreateViewHolder获取位置

时间:2015-06-27 20:13:13

标签: android android-recyclerview recycler-adapter

我有一个RecylerView适配器,我在onCreateViewHolder方法中处理onClicks,但是我无法找到获取当前位置的方法。我目前的方法如下:

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.card_small, parent, false);

        return new ViewHolder(itemView, new ViewHolder.IViewHolderClicks() {
            @Override
            public void onImage(ImageView image) {
                // Need the position for logic in here
                // for example, myArrayList.get(position);
            }
        });
    }

有人知道如何从onCreateViewHolder中访问当前位置吗?

2 个答案:

答案 0 :(得分:2)

在onClick处理程序中,调用viewHolder.getAdapterPosition()。

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.card_small, parent, false);

    final ViewHolder vh = ViewHolder(itemView, new ViewHolder.IViewHolderClicks() {
        @Override
        public void onImage(ImageView image) {
            int position = vh.getAdapterPosition();
        }
    });
    return vh;
}

答案 1 :(得分:1)

onCreateViewHolder()不适合存放该职位。当ViewHolder被回收时,您将不会再接到onCreateViewHolder()的电话,因此当ViewHolder被回收时,您将无法“修复”该位置。

您可以在onBindViewHolder()中执行此操作,它会将您的位置作为其参数之一,并在每次回收ViewHolder时调用。