gpt4 book ai didi

android - 具有多个布局的 Recyclerview 在滚动时复制项目

转载 作者:行者123 更新时间:2023-11-30 00:48:24 26 4
gpt4 key购买 nike

在具有多个布局的 Recyclerview 中,我覆盖了 getItemViewType() 方法,通过该方法我决定显示哪个布局。当滚动重复项目出现并改变它们的位置时出现奇怪的问题。

当我根据位置对事物进行硬编码时,就不会像下面的代码示例那样重复。

@Override 
public int getItemViewType (int position)
{
switch (position)
{
case 0:
return TYPE_HEADER;

case 8:
return TYPE_HEADER;

default:
return TYPE_ITEMS;
}
}

但是当我像下面的代码一样更改它并使其动态而不是静态位置时,重复的开始。

String tempDate = "";
List<String> items = new ArrayList<>();
items.add("2017-01-01");
items.add("2017-01-01");
items.add("2017-01-02");
items.add("2017-01-02");
items.add("2017-01-02");
items.add("2017-01-03");
items.add("2017-01-03");
items.add("2017-01-03");
items.add("2017-01-04");
@Override
public int getItemViewType (int position)
{
if(!tempDate.equalsIgnoreCase(items.get(position)){
tempDate = items.get(position);
return TYPE_HEADER;
} else{
tempDate = items.get(position);
return TYPE_ITEMS;
}


@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {

switch (viewHolder.getItemViewType()) {
case TYPE_HEADER:
//Make your header view visible
initialize the view resources of HeaderLayout xml
break;

case TYPE_ITEM:
//Make your second header view visible
initialize the view resources of ItemLayout xml
break;
}

}

据我所知,其他方法 onBindViewHolder()、onCreateViewHolder() 都很好。任何帮助表示赞赏。

最佳答案

我认为这里简单更好:

private List<String> items = new ArrayList<>();

@Override
public int getItemViewType (int position) {
if (position == 0) {
return TYPE_HEADER;
}

String textForPosition = items.get(position);
String textForPrevPosition = items.get(position - 1);

if (textForPosition.equalsIgnoreCase(textForPrevPosition)) {
return TYPE_HEADER;
}
return TYPE_ITEM;
}


@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {

// Use dateText instead of tempDate
String dateText = items.get(i);
switch (viewHolder.getItemViewType()) {
case TYPE_HEADER:
//Make your header view visible initialize the view resources of HeaderLayout xml
break;

case TYPE_ITEM:
//Make your second header view visible initialize the view resources of ItemLayout xml
break;
}

}

关于android - 具有多个布局的 Recyclerview 在滚动时复制项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41449552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com