保存按钮状态android

时间:2017-06-22 18:41:18

标签: android button click state

我正在制作一个具有书签功能的新闻应用程序。当用户点击书签按钮时,图像会被更改并保存书签,然后再次点击该图标会删除书签。但是,当我去其他一些活动然后回到主要新闻页面时,书签按钮图像再次变为默认图像。

按钮无法保持状态。

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

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();
            }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您有两个选项可以做到这一点,一个是保存服务器上每个项目的书签状态,默认情况下应该为false,点击它后,更新值。

但我猜您是通过第三方服务器获取这些新闻,也许是某些新闻频道的RSS源,您没有从自己的服务器获取这些新闻,因此您无法在服务器上进行更改。

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