2016-06-02 5 views
0

Я начинаю новое действие, перейдя по элементу в моем списке. Когда я открываю новую активность, появляется переключатель. Я пытаюсь сохранить состояние переключения отдельно для каждого элемента списка. Должен ли я использовать общие предпочтения? Но как?Как сохранить состояние кнопки переключения отдельно по каждому элементу списка

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.one_event); 

btnAddToList = (ToggleButton) findViewById(R.id.btnAddToList); 
    btnAddToList.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) { 
      if(isChecked) { 
       addEventToList(); 
       scheduleNotification(getNotification("The Event begin soon"), 7200000); 
      } 
      else { 
       Toast.makeText(OneEvent.this, id_favorite_event, Toast.LENGTH_LONG).show(); 
      }; 
     } 
    }); 
} 


private void addEventToList(){ 
    final String user_id = id_user; 
    final String event_id = id_event; 

    class AddNewEventToList extends AsyncTask<Void,Void,String>{ 
     ProgressDialog loading; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      loading = ProgressDialog.show(OneEvent.this,"Please", "wait",false,false); 
     } 

     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 
      loading.dismiss(); 
      String suc = getFavoriteEventId(s); 
      if(suc.equalsIgnoreCase("success")){ 
       Toast.makeText(OneEvent.this, "Done", Toast.LENGTH_LONG).show(); 
      }else { 
       Toast.makeText(OneEvent.this, s, Toast.LENGTH_LONG).show(); 
      } 
     } 

     @Override 
     protected String doInBackground(Void... v) { 
      HashMap<String,String> params = new HashMap<>(); 
      params.put(Config.LIST_COLUMN_USER_ID,user_id); 
      params.put(Config.LIST_COLUMN_EVENT_ID, event_id); 

      RequestHandler rh = new RequestHandler(); 
      String result = rh.sendPostRequest(Config.URL_ADD_TO_LIST, params); 
      return result; 
     } 

     private String getFavoriteEventId(String json) { 
      try { 
       JSONObject jsonObject = new JSONObject(json); 
       JSONArray result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY_FOR_FAVORITE_EVENT_ID); 
       JSONObject c = result.getJSONObject(0); 
       id_favorite_event = c.getString(Config.TAG_GET_FAVORITE_EVENT_ID); 
       json = "success"; 
       return json; 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      return json; 
     } 
    } 
    AddNewEventToList anetl = new AddNewEventToList(); 
    anetl.execute(); 
} 
+0

Если вы закрываете приложение, состояние переключения должно быть сохранено? – ansorod

+0

@ansorod Yep, right – FatSlowpoke

+0

@ansorod Вид «Like button» – FatSlowpoke

ответ

0

Вы можете установить некоторый объект, логический, чтобы указать в этом случае флажок в представлении в виде списка. Вы можете использовать setTag, чтобы установить тег в представление. Вы можете вернуть значение из него с помощью getTag. Надеюсь это поможет.

+0

Не понимаю, не могли бы вы объяснить на примере? – FatSlowpoke

Смежные вопросы