Raj*_*mar 1 android listview android-recyclerview
我的代码为:
@Override
public CustomRatingHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(
R.layout.custom_rating_lyt, null);
CustomRatingReviews ratingObj = (null != mRatingLst && position < mRatingLst.size()) ?
mRatingLst.get(position) : null;
CustomRatingHolder viewHolder = new CustomRatingHolder(mAdapContext, ratingObj, view);
position++;
return viewHolder;
}
Run Code Online (Sandbox Code Playgroud)
我想要回收器适配器的 onCreateViewHolder 内的当前位置。让任何人帮助我摆脱这个困境。提前致谢。
不确定您期望实现什么目标。onCreateViewHolder 会为集合中的每个对象调用一次,以便绑定、膨胀必要的布局并查找所有视图。您可以根据整数膨胀不同的布局并绑定不同的 ViewHolders:onCreateViewHolder(ViewGroup parent, int viewType)
如果您有不同的视图类型,则需要重写将使用项目位置调用的 getItemViewType 方法,以便您可以确定所需的视图类型。此方法返回一个 int,您将在 onCreateViewHolder 中收到该值。
这是一个很好的例子:
@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(...);
}
}
Run Code Online (Sandbox Code Playgroud)
我在您的代码中看到您正在 ViewHolder 的构造函数中发送数据。这违背了此类的目的,因为对于一种对象类型,您只有一个 ViewHolder 实例,并且它只需要保存布局视图信息,因此您不需要每次需要绑定对象时都查找视图。您实际上需要使用 onBindViewHolder 来绑定您的对象,例如:
public void onBindViewHolder(UsersGroupsAdapter.ViewHolder holder, int position) {
// or something similar
holder.bind(mData.get(position));
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
4236 次 |
| 最近记录: |