我有一个多行列表视图,使用 hashmaps 实现。我从数据库中获取数据。
我有另一个活动,我正在添加我的项目,这些项目正在添加到数据库中。现在,当按下保存按钮时,新添加的项目应立即出现在片段中实现的列表视图中。我不知道如何刷新此活动中的列表视图。
这是我实现 listview 的片段:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
myView = inflater.inflate(R.layout.fragment_layout, container, false);
l = db.getAllEntries();
list = (ListView) myView.findViewById(R.id.entrylist);
mylist = new ArrayList<HashMap<String,String>>();
HashMap<String,String> item;
while(!l.isEmpty()){
e = l.get(0);
l.remove(0);
item = new HashMap<String,String>();
item.put( "line1", e._totime + " - " + e._totime);
item.put( "line2", e._subject);
item.put( "line3", e._place);
mylist.add(n++,item);
}
sa = new SimpleAdapter(getActivity(), mylist,
R.layout.multi_line,
new String[] { "line1","line2", "line3" },
new int[] {R.id.line_a, R.id.line_b, R.id.line_c});
list.setAdapter(sa);
return myView;
}
在这个活动中,我将项目添加到数据库中,它应该立即出现在我上面的列表视图中:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.save:
sub = subject.getText().toString();
teach = teacher.getText().toString();
pla = place.getText().toString();
da = day.getSelectedItem().toString();
fro = fromtime.getText().toString();
to = totime.getText().toString();
i = new Entries(sub,teach,pla,da,fro,to);
db.addEntry(i);
FragmentView1 f = (FragmentView1) this.getSupportFragmentManager().findFragmentByTag(FragmentView1.class.getName());
l = db.getAllEntries();
HashMap<String,String> map;
while(!l.isEmpty()){
e = l.get(0);
l.remove(0);
map = new HashMap<String,String>();
map.put( "line1", e._fromtime + " - " + e._totime);
map.put( "line2", e._subject);
map.put( "line3", e._place);
f.getArrayList().add(n++,map); //nullpointerexception here
}
f.getMyListAdapter().notifyDataSetChanged();
/*Toast.makeText(this, "You have chosen the " + getResources().getString(R.string.save) + " menu option",
Toast.LENGTH_SHORT).show();*/
return true;
default:
return super.onOptionsItemSelected(item);
}
}