我正在使用Tab Layout&查看包含一些视图的寻呼机。
我为Xamarin Android开发了项目,现在我想用Android Studio创建。
我已经像以前的项目一样实现了FragmentPagerAdapter,但问题是在Fragment类中使用Func。
我以前的班级是这样的:
public class SelectDateViewFragment : Android.Support.V4.App.Fragment
{
readonly Func<LayoutInflater, ViewGroup, Bundle, View> view;
public SelectDateViewFragment(Func<LayoutInflater, ViewGroup, Bundle, View> _view)
{
view = _view;
}
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your fragment here
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// Use this to return your custom view for this Fragment
// return inflater.Inflate(Resource.Layout.YourFragment, container, false);
base.OnCreateView(inflater, container, savedInstanceState);
return view(inflater, container, savedInstanceState);
}
}
我能够创建片段并像这样添加到FragmentList:
viewPagerAdapter.addFragmentView((i, v, b) =>
{
var view = i.Inflate(Resource.Layout.SelectDateRecyclerViewLayout, v, false);
那么,您建议在我的Activity中使用相同的逻辑?
感谢。
答案 0 :(得分:0)
好的问题已由我自己解决了。
基本上我已经用必要的参数实现了Func到Java。
1)创建界面
public interface Func<B,N,K, View> {
View invoke(B arg1,N arg2,K arg3);
}
2)实现接口
class FuncImpl<B,N,K, View> implements Func<B,N,K, View> {
Func<B,N,K, View> function;
public FuncImpl(Func<B,N,K, View> function) {
this.function = function;
}
@Override
public View invoke(B arg1,N arg2,K arg3) {
return this.function.invoke(arg1, arg2, arg3);
}}
3)在Fragment中使用class
public class SelectDateViewFragment extends Fragment {
Func<LayoutInflater,ViewGroup,Bundle,View> view;
public SelectDateViewFragment( Func<LayoutInflater,ViewGroup,Bundle,View> view){
this.view = view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
return view.invoke(inflater,container,savedInstanceState);
}}
4)设置ViewPager适配器
selectDateAdapter = new SelectDateAdapter(getSupportFragmentManager(),charSequences);
selectDateAdapter.addFragmentView(new Func<LayoutInflater, ViewGroup, Bundle, View>() {
@Override
public View invoke(LayoutInflater arg1, ViewGroup arg2, Bundle arg3) {
View view = arg1.inflate(R.layout.layout_select_date_recyclerview,arg2,false);
return view;
}
});
viewPagerView.setAdapter(selectDateAdapter);
因此,此解决方案并不常见,但使流程变得非常简单。