2016-04-04 11 views
0

私はビューを持っており、それにsharedPrefsを保存します。ビューを最初にクリックすると、boolの値はtrueになります。もう一度クリックし、値がtrueの場合は、再度falseにする必要があります。ここでSharedPreferencesに基づいてOnClickListenersを設定します。

はいくつかのコードです:

if(AppController.getInstance().getPrefManager().isItClicked(id)){ 
      imageView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        AppController.getInstance().getPrefManager().delete(id); 
       } 
      }); 
     } else { 
      imageView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        AppController.getInstance().getPrefManager().insert(id); 
       } 
      }); 
     } 

そしてここでは、私の環境設定処理の方法です:

public void insertSingleQuotation(String id) { 
     editPrefs.putBoolean(id, true).apply(); 
     editPrefs.commit(); 
    } 




public boolean isItClicked(String id) { 
     return sharedPrefs.getBoolean(id, false); 
    } 

    public void deleteSingleQuotation(String id){ 
     editPrefs.remove(id); 
     editPrefs.apply(); 
     editPrefs.commit(); 
    } 

さらに私はPagerAdapterを持っており、コンテナisShown場合、isItLikedを呼び出します。今、問題は、コンテナがレイアウトとsharedPrefsをリフレッシュしないため、他のビューにスクロールしてから再度これに戻り、instantiateItemとdestroyItemが呼び出され、ビューがリフレッシュされるようにする必要があります。

どうすればこの問題を解決できますか?

+0

ステータスを変更したクリックのコードを投稿してください(真偽) – Bharatesh

答えて

1

アクション(挿入/削除)のボタンがあると仮定して、私は以下のコードを書いています。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_screen); 
    //initialization of views/viewpager and other stuff 
    //get bool value from SharedPreferences and set it to the button/ur view 
    button.setTag(AppController.getInstance().getPrefManager().isItClicked(id)); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //change true to false and vice versa 
      boolean bool= !((boolean) v.getTag()); 
      if(bool){ 
       AppController.getInstance().getPrefManager().delete(id); 
      }else{ 
       AppController.getInstance().getPrefManager().insert(id); 
      } 
      v.setTag(bool); 
      //get the current/selected fragment instance and update the views 
      //like fragment1.updateBoolean(bool); 
     } 
    }); 
    //how to update pager fragment on change of some 
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

     } 

     @Override 
     public void onPageSelected(int position) { 
      //according to position get the instance of the fragment and update fragment views 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 

Happy_Coding;

+0

すばらしいことに、ありがとうございます。 – blueman3399

関連する問題