我的代码为:
package.json
我想在回收器适配器的onCreateViewHolder中找到当前位置。让任何人帮我解决这个问题。在此先感谢。
答案 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();