gpt4 book ai didi

java - 在 android 中的 RecyclerView 中保存 ToggleButton 的状态

转载 作者:行者123 更新时间:2023-12-01 11:35:44 24 4
gpt4 key购买 nike

我有一个 recyclerView,它从输出 json 的 url 获取数据,并使用 picasso 和其他一些数据加载图像。 View 中的每个项目都有一个图像、名称、日期和一个切换按钮。

我为切换按钮实现了 setOnCheckedChangeListener,以添加切换到数据库的图像。

我想做的是,当用户关闭应用程序并再次打开它时,我希望之前切换并保存在数据库中的项目将其切换按钮设置为 true。

发生的情况是,即使数据库中只有一个值,应用程序重新启动时也会激活多个切换按钮。

如何避免这种情况以及是否有更好的方法来实现这一点?

注意:这里只添加了部分代码。

@Override
public void onBindViewHolder(final ImagesViewHolder imagesViewHolder, final int position) {
imagesViewHolder.toggleFavorite.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
database.saveLiked(currentImage, mScreenWidth);
} else {
// The toggle is disabled
}
}
});

for (Image image : database.getAllData()) {
if (image.getUrl().equals(currentImage.getUrl())) {
imagesViewHolder.toggleFavorite.setChecked(true);
break;
}
}
}

保存喜欢的方法

public void saveLiked(Image currentImage,int mScreenWidth) {
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();

values.put(KEY_IMAGE_CATNAME, currentImage.getAuthor());
values.put(KEY_IMAGE_URL, currentImage.getUrl());

// Inserting Row
db.insert(TABLE_NAME, null, values);
db.close(); // Closing database connection
}

最佳答案

您不仅应该打开,还应该关闭。IE。尝试改变这个

for (Image image: database.getAllData()) {
if (image.getUrl().equals(currentImage.getUrl())) {
imagesViewHolder.toggleFavorite.setChecked(true);
break;
}
}

到此

// unchecked by default, unless proven checked below
imagesViewHolder.toggleFavorite.setChecked(false);
for (Image image: database.getAllData()) {
if (image.getUrl().equals(currentImage.getUrl())) {
imagesViewHolder.toggleFavorite.setChecked(true);
break;
}
}

RecyclerView 通过仅将新数据绑定(bind)到 View 来重用 View ,并且您的问题可能会显现出来,因为 RV 重用了之前已切换按钮的 View ,并且在重新绑定(bind)到新数据时您没有重置其“切换”状态。

关于java - 在 android 中的 RecyclerView 中保存 ToggleButton 的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30011513/

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