2014-12-27 2 views
0

Как обновить пользовательский интерфейс активности, чтобы отразить изменения в Модели.Обновить пользовательский интерфейс из-за изменения модели

Я два мероприятия под названием DonorDetailActivity и DonorEditActivity.

Оба представляют собой модель под названием Донор, который является простым объектом. От DonorDetailActivitystartActivityForResult() выполнен для получения DonorEditActivity. В DonorEditActivity после Донор (модель) отредактирован, мы вернулись на DonorDetailActivity. После показать поток

MainAcitvity ==>> DonorListActivity ==> DonorDetailActivity ==> DonorEditActivity 

Вот код вида деятельности, который я использую (без учета основного и списка активности)

DonorDetailActivity

public class DonorDetailActivity extends ActionBarActivity { 

    private View detailView; 
    private Donor donor; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Bundle bundle = getIntent().getExtras(); 
     donor = (Donor) bundle.getSerializable("DONOR"); 

     detailView = getLayoutInflater().inflate(R.layout.activity_donor_detail,null); 

     TextView txvUserId = (TextView) detailView.findViewById(R.id.txvUserId); 
     txvUserId.setText(donor.getUserId()); 

     //Other properties of Donor ...... 

     Button btnEditDonor = (Button) detailView.findViewById(R.id.btnEditDonor); 
     btnEditDonor.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent donorEditIntent = new Intent(DonorDetailActivity.this, DonorEditActivity.class); 
       donorEditIntent.putExtra("DONOR", donor); 
       startActivityForResult(donorEditIntent, DONOR_EDIT_REQUEST); 
      } 
     }); 

     @Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      if (requestCode == DONOR_EDIT_REQUEST) { 
       if (resultCode == RESULT_OK) { 

        donor = (Donor) data.getSerializableExtra("DONOR"); 
        //ToDo refresh screen with edited Donor object 
        //How to do this 
       } 
      } 
     } 
    } 
} 

DonorEditActivity

public class DonorEditActivity extends ActionBarActivity implements AsyncTaskCallback<String> { 

    private static final int DONOR_EDIT_REQUEST = 1; 
    private View editView; 
    private Donor donor; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     .... 
    } 

    //Donor edit complete. Return to Detail Class with modified Donor object 

    @Override 
    public void onAsyncTaskCompleted(String result) { 
     Intent detailIntent = new Intent(); 
     detailIntent.putExtra("DONOR", donor); //Modified Donor object 
     if (result == null || result.length() == 0){ 
      setResult(RESULT_OK, detailIntent); 
     } 
     else { 
      setResult(RESULT_CANCELED, detailIntent); 
     } 
     finish(); 
    } 
} 

Итак, как обновить пользовательский интерфейс, когда я вернусь в DonorDetailActivity с модифицированным Донором.

+0

Завершить и перезапустить DonorDetailActivity? –

+0

Работает, но я был в замешательстве, что finish() фактически остановит выполнение кода и вернется к предыдущему действию. Но он продолжит выполнение следующей строки снова запускает DonorDetailActivity. Конечно работает! – Jatin

+0

'finish()' закрывает действие. Поэтому, когда вы перезагружаете его, он загружается совершенно новым, с обновленными данными. –

ответ

0

Завершение и перезапуск DonorDetailActivity будет работать.

finish() закрывает деятельность.
Итак, когда вы перезагружаете его, он загружается совершенно новым, с обновленными данными.

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