2016-04-04 18 views
0

Ich habe eine Sicht und speichere sharedPrefs damit. Wenn Sie zum ersten Mal auf die Ansicht klicken, sollte der bool-Wert wahr sein. Wenn Sie erneut darauf klicken und der Wert wahr ist, sollte er wieder falsch sein. HierOnClickListeners nach SharedPreferences setzen

ist ein Code:

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

Und hier sind die Methoden meiner Handhabung Prefs:

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

Außerdem habe ich eine PagerAdapter und rufen isItLiked, wenn der Behälter isShown. Nun, das Problem ist, dass der Container das Layout und die sharedPrefs nicht aktualisiert und ich zu einer anderen Ansicht blättern und dann wieder zu dieser zurückkehren muss, so dass instanziateItem und destroyItem aufgerufen und die Ansicht aktualisiert werden.

Also wie kann ich das lösen?

+0

den Code auf klicken, auf dem Sie den Status ändern (richtig/falsch) – Bharatesh

Antwort

1

Angenommen, Sie haben eine Schaltfläche für Aktion (einfügen/löschen), schrieb ich den folgenden Code.

@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

Das ist großartig, danke. – blueman3399