【问题标题】:Custom list view in fragment xamarin (How to call custom list view adapter from fragment)片段 xamarin 中的自定义列表视图(如何从片段调用自定义列表视图适配器)
【发布时间】:2016-10-19 05:18:20
【问题描述】:

(如何从片段中调用自定义列表视图适配器)

调用自定义列表视图适配器并显示列表的任何方式。

我有“Home.axml”和 Home.cs(列表片段)

我需要从 Home.cs(List fragment) 中调用一个自定义列表视图适配器并将其显示在 Home.axml 中

下面是我的代码。

片段

namespace AndroidApp2.Fragments
{
    public class Home : ListFragment
    {
         public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
          {  
        var adapter = new ArrayAdapter<String>(Activity, Android.Resource.Layout.SimpleListItemChecked, allheading);
        ListAdapter = adapter; 
        return base.OnCreateView(inflater, container, savedInstanceState);
          }    
    }
}

上面的代码是我正在使用的,它对我来说工作正常。但是如何创建一个能够从片段调用的服装列表视图适配器?

Home.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:minWidth="25px"
    android:minHeight="25px">
    <fragment
        android:id="@+id/heading_fragment"
        android:layout_weight="1"
        android:layout_width="0px"
        android:layout_height="match_parent" />
    <FrameLayout
        android:id="@+id/details"
        android:layout_weight="1"
        android:layout_width="0px"
        android:layout_height="match_parent" />
</LinearLayout>

【问题讨论】:

  • 我同意了,但这也是从 Activity 而不是从片段调用自定义列表视图适配器,我需要从片段调用它。
  • 所有逻辑和“工作”都在活动上完成的活动/片段关系的想法不是吗?你的片段不能在父活动上调用方法吗:((MyActivity)Activity).MyMethod();
  • 实际上我有一个活动并且正在从该活动中调用一个片段,下面是代码。开关(位置){案例0:fragmentszz = Home.NewInstance();休息; } FragmentManager.BeginTransaction().Replace(Resource.Id.content_frame, fragmentzz).Commit();通过这种方式,一旦加载片段,我需要在片段中列出详细信息,我的问题是如何从活动本身加载它。这有意义吗?

标签: c# xamarin xamarin.android xamarin.forms


【解决方案1】:
Take a look on this code. I manged to call it from fragment, i only had to set the context properly otherwise i got this error "Window.getLayoutInflater()' on a null object reference".



        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            var view = inflater.Inflate(Resource.Layout.TagDialog, container, false);
            Button confirmBtn = view.FindViewById<Button>(Resource.Id.ConfirmBtn);
            Button cancelBtn = view.FindViewById<Button>(Resource.Id.CancelBtn);

            AbsenceService service = new AbsenceService();
            ListViewTags = view.FindViewById<ListView>(Resource.Id.TagListView);
            TagItems = service.GetTags(1);
            ListViewTags.Adapter = new Cards_TagListAdapter(context, TagItems);

            // "Cancel" click
            cancelBtn.Click += delegate {
                Dismiss();
            };

            confirmBtn.Click += ConfirmBtn_Click;
            return view;
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多