我有一个片段是数据库值列表.我正在使用ListVIEw向屏幕显示值.
我有另一个片段,其中包含用于向数据库添加条目的按钮.所以我的问题是,当我通过点击第一个片段上的按钮向数据库添加条目时,我需要第二个片段(或应用程序中的第二个页面)来更新屏幕上显示的数据库值列表.
这是数据库列表片段:
public class FragManage extends Fragment {private PunchesDataSource datasource;@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) { datasource = new PunchesDataSource(getActivity()); datasource.open(); List<Punch> values = datasource.getAllPunches(); // Use the SimpleCursorAdapter to show the elements in a ListVIEw ArrayAdapter<Punch> adapter = new ArrayAdapter<Punch>(getActivity(), androID.R.layout.simple_List_item_1, values); VIEw myFragmentVIEw = inflater.inflate(R.layout.fragment_manage, container, false); ListVIEw List = (ListVIEw) myFragmentVIEw.findVIEwByID(R.ID.List); List.setAdapter(adapter); return myFragmentVIEw; }}
所以我只想在包含按钮的其他片段中执行adapter.notifyDataSetChanged()(类似这样):
// Punch OUT button. button out_button = (button) myFragmentVIEw.findVIEwByID(R.ID.out_button); out_button.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { datasource.createPunch("out-" + getTime()); FragManage.adapter.notifyDataSetChanged(); } });
解决方法:
您可以使用具有更新片段的主活动的侦听器
在带有按钮的frag中添加这些
private voID onDBChanged(){ OnDBListener.DBChanged(true);}public voID setonDBListener(OnDBListener Listener){ this.OnDBListener = Listener;}public interface OnDBListener{ public voID DBChanged(boolean DB_Bool);}
然后在DB frag中
public voID update(){ adapter.notifyDataSetChanged();}
然后将监听器附加到创建frags的Main活动中
buttonsFragment.setonDBListener(new OnDBListener() { @OverrIDe public voID DBChanged(boolean DB_Bool) { DatabaseVIEwFrag.update(); }});
当您在按钮片段调用中更新数据库时
onDBChanged()
告诉它已更新的一切
总结以上是内存溢出为你收集整理的android – 在Fragment外部执行adapter.notifyDataSetChanged()全部内容,希望文章能够帮你解决android – 在Fragment外部执行adapter.notifyDataSetChanged()所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)