为了账号安全,请及时绑定邮箱和手机立即绑定

复选框和sharedPreferences

复选框和sharedPreferences

慕盖茨4494581 2021-05-01 10:07:52
我正在为电影应用程序使用网格视图。当用户单击电影时,将显示该电影的详细信息。在此新活动中,用户可以将电影标记为收藏。我正在使用sharedPreferences来存储复选框的状态(选中或未选中时)。问题是,当我返回到网格视图以选择另一部电影以将其标记为“我的收藏”时,即使我没有明确检查这些电影,网格视图中的所有电影也都显示为“我的收藏”。拜托,这可能是造成这种行为的原因吗?以下是我的详细活动代码:public class MovieDetails extends AppCompatActivity {    private static final String SHARED_PF_NAME = "movieSP";    private static final String CHECK_BOX_STATE = "check_state";    private SharedPreferences sharedPreferences;    CheckBox checkBox;    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.second_details);        getSupportActionBar().setTitle("Movie Details");        /*//get values passed from main        movie = getIntent().getParcelableExtra(MainActivity.MOVIE_IN_CURRENT_CLICKED_POSITION);        // get movie id of the movie that was just passed        final int movieIdOfMovieInCurrentlyClicked= movie.getMovieid();     MainActivity(意图代码):gridView.setAdapter(new MovieDisplayAdapter(MainActivity.this, movies));                    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {                        @Override                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                            movieIdOfMovieInCurrentlyClicked = movies.get(position).getMovieid();                            moviePosition = position;                            Intent intent = new Intent(MainActivity.this, MovieDetails.class);                            //When clicked, the position of the current movie                            Movie movieIncurrentClickedPosition = movies.get(moviePosition);                            intent.putExtra(MOVIE_IN_CURRENT_CLICKED_POSITION, movieIncurrentClickedPosition);                            startActivity(intent);                        }                    });                }
查看完整描述

2 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

这里的事情是您要保存一个检查状态,因此当您尝试检索该检查状态只是一个检查状态时,您必须通过每个电影的标识符来过滤每个检查状态...因为附加注释更好将该信息存储在本地数据库的电影对象中,因此您只需执行简单的查询即可更新和检索该状态


查看完整回答
反对 回复 2021-05-12
  • 2 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信