1

在将记录插入 sqllite db 后,我想从另一个活动中调用 listview 适配器。

我不能调用 adapter.notifyDataSetChanged() 方法。最好的方法是什么。

public void onClick(View v) {
    TextView item_name;
    item_name=(TextView) findViewById(R.id.eItemName);         
    Log.d("Insert: ", "Inserting ..");
    db.add_item(new Item(item_name.getText().toString()), getApplicationContext());

    // I want to call the method HERE!!!! 

    finish();   
}
4

2 回答 2

1

只是

在当前活动之后,从上一个活动finish()中调用(正如我在上一个活动中假设您的列表视图)。adapter.notifyDataSetChanged()onActivityResult()

还使用从以前的活动开始您的当前活动startActivityForResult();

或者,如果您在此 Activity 中引用了 List Adapter,则使用该引用调用adapter.notifyDataSetChanged()。(但我认为这不是一个好习惯)

于 2012-07-21T11:34:15.643 回答
1

更好的选择是在拥有 ListView 的 Activity 中重新加载ListView新数据。onResume()无需notifyDataSetChanged()从另一个班级打电话,因为您的列表在另一个活动中不可见。

@Override
protected void onResume() {
    super.onResume();

    //fill your Collection with new data
    // setAdapter or notify your adapter
}
于 2012-07-21T11:42:41.893 回答