마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

쉐어드프리퍼런스와 어댑터

0 추천

쉐어드프리퍼런스랑 어댑터관련질문인데 여기에서 별을 누르면 노란색으로 바뀌거든용그 불들어오게하는 코드일부분인데 지금 주석되어있는 쉐어드프리퍼런스를 주석풀면 별하나 누르면 누른별만 불들어오지않고 사진에 보이는 별 두개다 불이 다들어오고 대신 액티비티 나갔다가 들어오면 별 불들어온 상태는 저장은 되는 반면에

    public View getView(final int position, View convertView, ViewGroup parent) {
        convertView = LayoutInflater.from(parent.getContext()).inflate(layout.word_item,parent,false);

        final TextView wordText = convertView.findViewById(id.word_item);
        TextView meanText = convertView.findViewById(id.mean_item);
        imageView = convertView.findViewById(id.remember_btn);
        final EnglishWordItem englishWordItem = items.get(position);
        wordText.setText(englishWordItem.getWord());
        meanText.setText(englishWordItem.getMean());
      //  preferences = PreferenceManager.getDefaultSharedPreferences(context);

  //      englishWordItem.setLike( preferences.getBoolean("on",false));

        if(englishWordItem.isLike()) {
            imageView.setImageResource(drawable.on_star);
            word = wordText.getText().toString();
//            preferences = PreferenceManager.getDefaultSharedPreferences(context);
//            edit = preferences.edit();
//            edit.putBoolean("on", englishWordItem.isLike());
//            edit.apply();

지금 주석된 상태로 돌리면 별누르면 눌린별만 불들어오는 반면에 저장이 안되는데, 저게 왜 다 불이 들어오는걸까요..?

익명사용자 님이 2019년 8월 9일 질문

1개의 답변

0 추천

 edit.putBoolean("on", englishWordItem.isLike()); 로 저장하시고,

preferences.getBoolean("on",false); 으로 결과 받아오다보니 꼬인듯 합니다.

 edit.putBoolean("on" + englishWordItem.getWord().toString(), englishWordItem.isLike()); 

preferences.getBoolean("on"+ englishWordItem.getWord().toString(),false); 같이 

preferences에 저장하는 key 값을 단어별로 다르게 변경 해 보세요

 

익명사용자 님이 2019년 8월 9일 답변
해봤는데 저장이 안됩니다.. toString()은 되긴되는데 회색글자되면서 redundant라고 나오네요
...