更新onResume中的UI

时间:2011-01-26 12:47:24

标签: android

是否可以在onResume方法中更新活动的UI?例如,使用新游标更新列表视图的游标适配器。

在我的应用程序中,我有一个活动A和另一个活动B.两个活动的UI包含带有依赖于常见字符串列表的游标适配器的列表视图。我有按钮可以从A导航到B,也可以从B导航到A.问题是,如果我从A转到B,然后在B活动中我更改了字符串列表数据,并通过UI数据配置,如果我按BACK,我将再次转到A,但列表视图将不会根据B中的更改进行更新。

以这种方式使用onResume方法是一种好的做法,还是有更好的解决方案?

非常感谢,

的Gratzi

4 个答案:

答案 0 :(得分:1)

不是使用新游标,而只是调用notifyDataSetChanged()工作?如果您每次回到Activity都需要更新,那么您必须更新onResume或onRestart / onStart中的UI。

答案 1 :(得分:0)

我认为正确的方法是使用startActivityForResult

例如,您可以使用以下方式从A开始活动B

.....
    Intent intent = new Intent(this, B.class);
    startActivityForResult(intent);
....


// Listen for results from B.
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    // See which child activity is calling us back.
    switch (resultCode) {
        case 0://Zero ie means data has been changed into the B activity
           //Update the cursor
        default://No changes from B so do nothing
            break;
    }
}

答案 2 :(得分:0)

对arraylist使用clear(),然后再次填充arraylist,

 arraylist.clear();
 arraylist.add("your arraylit items ");
 setListAdapter(adapter);
 adapter.notifyDataSetChanged();

感谢...

答案 3 :(得分:0)

我刚为此创建了一个函数。

extension ViewController: UITextFieldDelegate {
   func textViewDidEndEditing(_ textView: UITextView) {
    self.present(/*the targeted view controller*/)
  }
}

我正在使用光标以编程方式在LinearLayout内动态创建视图。

如果您想这样做,我也会使用它来确保在刷新数据时清除LinearLayout:

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

@Override
public void onResume(){
    super.onResume();
    dbStuff();
}

public dbStuff(){    
    LogDatabaseHelper logDatabaseHelper = new LogDatabaseHelper(this);
    SQLiteDatabase database = logDatabaseHelper.getWritableDatabase();
    Cursor cursor = database.rawQuery("SELECT * FROM " + LogDatabaseHelper.TABLE_NAME + " ORDER BY id DESC", null);

    // add/manipulate views using the cursor
}