获取recyclelerview android的onCreateViewholder中的当前位置

时间:2016-10-13 14:39:46

标签: android listview android-recyclerview

我的代码为:

package.json

我想在回收器适配器的onCreateViewHolder中找到当前位置。让任何人帮我解决这个问题。在此先感谢。

2 个答案:

答案 0 :(得分:3)

不确定您期望实现的目标。 onCreateViewHolder为集合中的每个对象调用一次,以便绑定膨胀必要的布局并查找所有视图。您可以扩展不同的布局并根据整数绑定不同的ViewHolders:onCreateViewHolder(ViewGroup parent, int viewType)

如果您有不同的视图类型,则需要覆盖将使用项目位置调用的getItemViewType方法,以便您可以确定所需的视图类型。此方法返回将在onCreateViewHolder中接收的int。

这是一个很好的例子:

@Override
public int getItemViewType(int position) {
    final Object dataObj = mDataSet.get(position);

    if (dataObj instanceof String) {
        return 0;
    }

    if (dataObj instanceof User) {
        return 1;
    }
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    switch(viewType) {
        case 0:
        return new StringViewHolder(...);

        case 1:
        return new UserViewHolder(...); 
    }
}

我在您的代码中看到您正在ViewHolder的构造函数中发送数据。这违背了这个类的目的,因为对象类型只有一个ViewHolder实例,它只需要保存布局视图信息,因此每次需要绑定对象时都不需要查找视图。实际上你需要使用onBindViewHolder来绑定你的对象,例如:

public void onBindViewHolder(UsersGroupsAdapter.ViewHolder holder, int position) {
    // or something similar
    holder.bind(mData.get(position));
}

希望这有帮助。

答案 1 :(得分:2)

我认为你需要:

getAdapterPosition();