我有两个活动 - 一个显示来自SQLite的数据,另一个在那里添加数据。我可以用标签在它们之间切换。问题是,如果我添加一个新项目,我不知道如何刷新列表,因为它在不同的活动类中,我无法在添加类中访问它。这怎么解决?添加新的不同活动后刷新SQLite列表
这里是我的两个类:
列表:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_1);
final ShoppingSQL shoppingSQL = new ShoppingSQL(this);
final List<ShoppingData> list = shoppingSQL.getAll();
final ArrayAdapter<ShoppingData> adapter = new ArrayAdapter<ShoppingData>(
this, android.R.layout.simple_list_item_1, list);
setListAdapter(adapter);
this.getListView().setLongClickable(true);
this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
shoppingSQL.delete((int)list.get(position).getId());
adapter.remove(list.get(position));
adapter.notifyDataSetChanged();
return true;
}
});
}
地址:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
}
public void ButtonOnClick(View v) {
ShoppingSQL shoppingSQL = new ShoppingSQL(this);
ShoppingData data = new ShoppingData();
data.setName("test");
shoppingSQL.add(data);
Dialog d = new Dialog(this);
d.setTitle("Added!");
d.show();
}
我也有一点sidequestion。在我的第一个(列表)活动中,当我在“onLongClick”中访问它们时,Eclipse使每个变量都是最终的 - 为什么是这样并且可以避免?此外,对于我应该关注什么以及如何让我的代码更好或者我犯的任何其他错误发表任何评论都会非常好。
使用cursor.setNotificationUri,contentResolver.notifyChange,也许cursor.registerContentChangeObserver – njzk2
从匿名类访问时,您需要变量最终或更广泛的范围。通常,您可以拥有这些实例成员。或者,您可能会注意到id是作为参数提供的(不需要获取(位置).getId,并且适配器也被传递。您可以将其转换为避免参考其他引用。 – njzk2
有添加活动触发一个事件,并让另一个拿起这个效果并刷新? – Zlatko