是否可以在onResume方法中更新活动的UI?例如,使用新游标更新列表视图的游标适配器。
在我的应用程序中,我有一个活动A和另一个活动B.两个活动的UI包含带有依赖于常见字符串列表的游标适配器的列表视图。我有按钮可以从A导航到B,也可以从B导航到A.问题是,如果我从A转到B,然后在B活动中我更改了字符串列表数据,并通过UI数据配置,如果我按BACK,我将再次转到A,但列表视图将不会根据B中的更改进行更新。
以这种方式使用onResume方法是一种好的做法,还是有更好的解决方案?
非常感谢,
的Gratzi
答案 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
}