android中单个片段内GridView之间的通信
我有一个使用Android支持框架的ViewPager,它加载了三个片段。用户可以通过滑动在它们之间导航 第二个片段包含两个GridView,每个GridView都使用适配器填充了按钮 这两个GridView被命名为(XML)左按钮和右按钮。左侧按钮由扩展BaseAdapter的CategoryAdapter控制,右侧按钮由扩展BaseAdapter的ItemAdapter控制 我遇到的问题是,当用户单击CategoryAdapter中的按钮时,我希望在ItemAdapter上调用notifyDataSetChanged(),然后在关联的GridView上调用invalidateViews()。因为这两个适配器是在同一个fragment MenuFragment中创建的,所以我正在努力寻找它们之间通信的最佳方式 我已经看到了很多关于片段之间、片段和活动之间通信的答案,等等。我试图从CategoryAdapter中获取对R.id.right_按钮的引用,但找不到解决方案(因为无法访问findViewById等) 然后,我阅读了一些答案,其中建议我需要在片段中创建一个方法,因此我在MenuFragment.class中尝试了以下方法:android中单个片段内GridView之间的通信,android,android-fragments,android-gridview,Android,Android Fragments,Android Gridview,我有一个使用Android支持框架的ViewPager,它加载了三个片段。用户可以通过滑动在它们之间导航 第二个片段包含两个GridView,每个GridView都使用适配器填充了按钮 这两个GridView被命名为(XML)左按钮和右按钮。左侧按钮由扩展BaseAdapter的CategoryAdapter控制,右侧按钮由扩展BaseAdapter的ItemAdapter控制 我遇到的问题是,当用户单击CategoryAdapter中的按钮时,我希望在ItemAdapter上调用notifyD
public void updateRightGrid() {
//grab a reference to the right hand grid right_buttons
GridView rightButtons = (GridView) getView().findViewById(R.id.right_buttons);
//get the adapter that is controlling right_buttons
ItemAdapter menuItemAdapter = (ItemAdapter) rightButtons.getAdapter();
//tell this adapter that we have some new data, so please refresh
menuItemAdapter.notifyDataSetChanged();
//force the grid to refresh
rightButtons.invalidateViews();
}
问题是我仍然找不到从CategoryAdapter调用此方法的方法。我创建了一个实现OnClickListener的内部类,在public void onClick(视图v)中,我试图调用该片段的方法updateRightGrid()。我可以通过变量mContext访问上下文,但这似乎没有帮助
任何帮助都将不胜感激 适配器中可能有活动的上下文,因此可以在活动中创建一个方法,如:
//your activity code
public void notifyItemAdapter() {
itemAdapter.notifyDataSetChanged() ;
}
然后在您的类别适配器中:
//adapter code
activityContext.notifyItemAdapter();
背景确实存在。我使用:
leftButtons.setAdapter(新的CategoryAdapter(this.getActivity())
传递上下文。但是,当我向FragmentActivity添加一个方法时,例如:public void notifyItemAdapter(){Toast.makeText(getApplicationContext(),“msg msg”,Toast.LENGTH_SHORT).show()}
我在Eclipse中遇到以下错误:方法notifyItemAdapter()类型上下文未定义-这是另一个片段吗?好的-我想我已经解决了-我需要转换上下文。因此,我最终调用了以下方法:((MyFragmentActivity)mContext).notifyItemAdapter()代码>-到目前为止似乎还可以。