我有兩個活動 - 一個顯示來自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