0

Je souhaite enregistrer mon état ToggleButton par SharedPreferences dans les codes ci-dessous. S'il vous plaît me guider. Merci beaucoup.Enregistrement de l'état ToggleButton dans ListView à l'aide de SharedPreferences

 
public class MyAdapterList extends BaseAdapter { 

    private Context context; 
    private List text; 



    public MyAdapterList(Context context, List text) { 
     this.context = context; 
     this.text = text; 
    } 

    @Override 
    public int getCount() { 
     return text.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return text.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = inflater.inflate(R.layout.item_view, null, false); 
     TextView tv = (TextView) view.findViewById(R.id.textView); 
     tv.setText(text.get(position)); 
     Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/b_titr.ttf"); 
     tv.setTypeface(tf); 
     tv.setTextColor(Color.parseColor("#003366")); 
     tv.setTypeface(tv.getTypeface(), Typeface.BOLD); 


     final ToggleButton toggleButton = (ToggleButton) view.findViewById(R.id.t_button); 

     final MyDatabaseHelper myDatabaseHelper = new MyDatabaseHelper(context); 

     toggleButton.setBackgroundResource(R.drawable.favorite_not_selected); 

     toggleButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       if (toggleButton.isChecked()) { 


        myDatabaseHelper.insert(text.get(position)); 

        toggleButton.setBackgroundResource(R.drawable.favorite_selected); 
        Toast.makeText(context, "Was added to the list of favorites", Toast.LENGTH_SHORT).show(); 


       } else { 


        myDatabaseHelper.deletedData(text.get(position)); 
        Toast.makeText(context, "Removed from favorites", Toast.LENGTH_SHORT).show(); 
        toggleButton.setBackgroundResource(R.drawable.favorite_not_selected); 


       } 

      } 
     }); 



     return view; 


    } 


} 


+0

vous voulez dire que vous voulez ot le faire pour tous les éléments de la liste? – Chol

+0

bro s'il vous plaît vérifier ma réponse – saeed

+0

@Chol yesssssss – Ethan

Répondre

0

Si je l'ai correcte magasin l'élément coché dans la base de certains où la clé unique (comme, - le nom si elle est unique) .. obtenir la liste des vérifié si le constructeur et vérifier si dans getview() existe que de le faire cocher sinon le décoche. Vous pouvez également utiliser les préférences partagées. Les deux techniques nécessitent une valeur unique.

0

vous pouvez enregistrer bascule état en utilisant le bouton ci-dessous le code

final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
     ToggleButton toggle = (ToggleButton) findViewById(R.id.toggle); 
     toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

       prefs.edit().putBoolean("value", isChecked).commit(); 
      } 
     }); 

pour les obtenir utiliser dos

Boolean value = prefs.getBoolean("value", false); 
+0

laissez-moi savoir votre résultat – saeed

+0

Mais il faudra enregistrer un seul état, pas tout l'état de chaque élément – Chol

+0

K bro i undenstand your.problem je vais vous attraper plus tard – saeed

0

J'ai toujours le même problem.I mettre ici des codes mes bases de données, s'il vous plaît me dire comment puis-je utiliser la base de données pour sauvegarder mon instruction ToggleButton?
Merci.

 
public class MyDatabaseHelper extends SQLiteOpenHelper { 


    public MyDatabaseHelper(Context context) { 
     super(context, "my_favorites", null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("CREATE TABLE \"main\".\"fav_tbl\" (\"id\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , \"fav\" TEXT)"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

    } 

    public Boolean insert(String list_items) { 
     SQLiteDatabase db = getWritableDatabase(); 

     ContentValues cv = new ContentValues(); 
     cv.put("fav", list_items); 
     long l = db.insert("fav_tbl", null, cv); 

     db.close(); 

     return l > 0 ? true : false; 
    } 

    public List read() { 
     SQLiteDatabase db = getReadableDatabase(); 
     Cursor cr = db.rawQuery("SELECT * FROM fav_tbl", null); 

     List ret = new ArrayList(); 

     if (cr.getCount() > 0) { 
      cr.moveToFirst(); 

      do { 
       ret.add(cr.getString(cr.getColumnIndex("fav"))); 
      } while (cr.moveToNext()); 


      db.close(); 

     } 

     return ret; 
    } 

    public Integer deletedData(String id) { 

     SQLiteDatabase db = getWritableDatabase(); 

     return db.delete("fav_tbl", "fav=?", new String[]{id}); 

    } 
} 
0
static ArrayList<String> toogleValue=new ArrayList<String>(); 

ToggleButton toggle = (ToggleButton) findViewById(R.id.toggle); 
if(toogleValue.contains("id")) 
{ 
toggle.setChecked(true) 
}else 
{ 
toggle.setChecked(false); 
} 

     toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)  { 
     if(isChecked) 
{ 
toogleValue.add("id") 
}else 
{ 
if(toogleValue.contains(id)) 
toogleValue.remove("id") 
}    
      } 
     }); 
I hope its help you.