我正在开发一个应用程序,它基本上可以很好地显示数据库信息。
主要活动:
public class MainActivity extends FragmentActivity {
public static List<Entry> entryTitles;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MySQLiteHelper db = new MySQLiteHelper(this);
entryTitles= db.getEntryTitles();
.....
}
....
}
导航抽屉的片段
public class PositionsFrag extends Fragment {
public static EntryListAdaptor entryAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
int i = getArguments().getInt(ARG_ENTRY_NUMBER);
switch(i){
case 0:
entryAdapter = new EntryListAdapter(getActivity(), MainActivity.entryTitles);
lv.setAdapter(entryAdapter);
break;
.....
}
}
}
最后,单击其中一个操作栏按钮会打开一个新活动,以允许用户将字段添加到新条目。这个新活动(创造性地称为 NewActivity.java)中的“完成”操作栏按钮应该——理论上——创建一个新的条目对象,将这个新对象添加到条目数据库中,将每个条目的第一个元素作为字符串存储到新列表并通知 entryAdapter 该列表已更新。
public class NewActivity extends Activity {
db = new MySQLiteHelper(this);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_done:
db.newEntry(new Entry(title, date, location));
MainActivity.entryTitles= db.getEntryTitles();
PositionsFrag.entriesAdapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), db.printFirstTitle(), Toast.LENGTH_SHORT).show();
finish();
....
}
}
}
当我运行它时,toast 正确显示了第一个条目的标题字段(表明数据库至少正在获取新条目并且我已经成功编写了 SQLite 读取函数)但 PositionFragment 中的 ListView 永远不会改变。
任何有关如何使其工作的指导或更好结构的建议将不胜感激。
干杯!