繁体   English   中英

保存按钮状态android

[英]Save button state android

我正在制作一个具有书签功能的新闻应用程序。 当用户单击书签按钮时,将更改图像并保存书签,然后再次单击以删除书签。 但是,当我转到其他活动然后返回新闻主页面时,书签按钮图像再次更改为默认图像。

按钮无法保留状态。

我也尝试过触摸,但没有成功

newsHolder.bookmark.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!isBookmarked) {
                    isBookmarked = true;
                    newsHolder.bookmark.setBackgroundResource(R.drawable.ic_bookmark);
                    newsObject.setTitle(currentNews.getmTitle());
                    newsObject.setDescription(currentNews.getmDescription());
                    newsObject.setDate(currentNews.getmPublishedAt());
                    newsObject.setPoweredBy(poweredby);
                    newsObject.setImageUrl(currentNews.getmUrlToImage());
                    newsObject.setSource(currentNews.getmSource());
                    newsObject.setUrl(currentNews.getmUrl());

                    newsDbHelper.addNews(newsObject);
                    newsHolder.bookmark.setPressed(true);
                    Toast.makeText(activity, "Bookmark Added", Toast.LENGTH_SHORT).show();
                }
                else
                {

                    newsHolder.bookmark.setPressed(false);
                    newsDbHelper.deleteBookmark(currentNews.getmUrl());
                    isBookmarked = false ;
                    newsHolder.bookmark.setBackgroundResource(R.drawable.ic_add_bookmark);



                    Toast.makeText(activity, "Bookmark Removed", Toast.LENGTH_SHORT).show();
            }

您应该将加书签的文章保存在持久性存储Prefs / BD / Cloud中,并在启动屏幕并根据按钮更改按钮状态时检查它是否已加书签。

您有两种选择,一种是将每个项目的书签状态保存在服务器上,默认情况下应为false,然后单击它以更新值。

但是我想您是通过第三方服务器(可能是某个新闻频道的RSS提要)获取这些新闻,而不是从您自己的服务器获取这些新闻,因此您无法在服务器上进行更改。

我可以向您建议的最佳解决方案是,您应该创建一个本地数据库,在该数据库中,将书签状态与该特定项目的ID相对应保存(来自新闻服务器的每个新闻项目必须具有唯一的ID)。 之后,您将设置来自服务器的新闻,但是您将从本地数据库中检查每个项目的书签状态。 当用户与书签按钮进行交互时,您将在数据库中相应地对该位置上的特定ID进行更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM