在我的项目中,我有一个包含最多20个项的recyclerView。在行模板中,我有一个文本视图和一个初始情况下隐藏的按钮,当recyclerview项被点击时,按钮的可见性会被切换。问题是当第一行中的按钮被显示并且滚动出视图,然后再滚回来时,按钮又变得不可见了,而没有调用toogle visibility。如何在recycler view滚出视图时保存对象的状态呢?
在我的项目中,我有一个包含最多20个项的recyclerView。在行模板中,我有一个文本视图和一个初始情况下隐藏的按钮,当recyclerview项被点击时,按钮的可见性会被切换。问题是当第一行中的按钮被显示并且滚动出视图,然后再滚回来时,按钮又变得不可见了,而没有调用toogle visibility。如何在recycler view滚出视图时保存对象的状态呢?
class Items {
String myString;
boolean visibility;
public String getMyString(){
return myString;
}
public boolean isVisible(){
return visibility;
}
public void setVisibility(boolean visibility){
this.visibility = visibility;
}
}
if(sharedpreferences.contains(String.valueof(position)) && sharedpreferences.getString(String.valueof(position), "").equals("true")){
//button visible
}
else{
// button gone/invisible
}
希望这能对你有所帮助
使用哈希映射来存储状态。当按钮被点击时,通过调用 getPosition()
来更新哈希映射中的位置和可见性。
public void onClick(View v) {
Btn.setVisibility(Btn.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
statesMap.put(getPosition(),Btn.getVisibility() == View.VISIBLE );
}
然后通过传递位置,在
onBindViewHolder(MyViewHolder holder, int position)
中从哈希图中读取值
holder.Btn.setVisibility(statesMap.get(position) != null && statesMap.get(position) != false ? View.VISIBLE : View.GONE);