猿问

复选框和sharedPreferences

我正在为电影应用程序使用网格视图。当用户单击电影时,将显示该电影的详细信息。在此新活动中,用户可以将电影标记为收藏。我正在使用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);


                        }

                    });

                }


慕盖茨4494581
浏览 148回答 2
2回答

慕码人8056858

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

相关分类

Java
我要回答