我有一个带适配器的RecyclerView
。在适配器中,我用列表填充我的视图。但在我的适配器中,我膨胀了两个不同的视图。这是一些代码:
@Override
public int getItemViewType(int position) {
switch (position) {
case 0:
return TYPE_HEADER;
default:
return TYPE_LIST_ITEM;
}
}
@Override
public DataObjectHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = null;
switch (viewType) {
//region User-Data like ProfilePic & Abonnenten
case TYPE_HEADER: {
view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.profile_besties_placeholder, parent, false);
return new DataObjectHolder(view) {
};
}
case TYPE_LIST_ITEM: {
view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.profile_besties_list_item, parent, false);
return new DataObjectHolder(view) {
};
}
}
return null;
}
现在,我尝试将数据设置为视图。我的列表中有20个项目,我将该位置设置为我的观看文本。我可以在RecyclerView
中看到它以1开头,但必须从0开始。这是我的onBind
:
@Override
public void onBindViewHolder(final DataObjectHolder holder, int position) {
switch (position) {
case TYPE_HEADER:
break;
default:
int newPostion = position -1;
bestiesItem = contents.get(position);
holder.progressBarBesties.setVisibility(View.VISIBLE);
//region set data to views
holder.textViewUsername.setText(bestiesItem.getStrUsername());
holder.textViewSubscribers.setText(bestiesItem.getStrAbos() + " Abos" + position);
Glide.with(context)
.load(bestiesItem.getStrImageName())
.thumbnail(0.1f)
.error(R.drawable.error_image)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.fitCenter()
.into(new GlideDrawableImageViewTarget(holder.imageViewProfilePic) {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> animation) {
super.onResourceReady(resource, animation);
//check isRefreshing
holder.progressBarBesties.setVisibility(View.GONE);
holder.imageViewProfilePic.setImageDrawable(resource);
}
});
//endregion
break;
}
}
我试过类似newPosition
的东西用1减去位置,但它不起作用。只有19项,但我在列表中添加了20项。问题是第一种观点..哦,我忘了这个:
static final int TYPE_HEADER = 0;
static final int TYPE_LIST_ITEM = 1;
一个视图只会被位置0夸大。因此,列表开始计入第一个位置,因此缺少第一个项目。
我如何获得所有物品?