当前位置: 首页 > 编程笔记 >

Xamarin.Android RecyclerView基础

韶兴德
2023-03-14
本文向大家介绍Xamarin.Android RecyclerView基础,包括了Xamarin.Android RecyclerView基础的使用技巧和注意事项,需要的朋友参考一下

示例

这是使用的示例Android Support Library V7 RecyclerView。通常建议使用支持库,因为它们提供了新功能的向后兼容版本,提供了框架中未包含的有用的UI元素,并提供了可用于应用程序的一系列实用程序。

要获取RecyclerView,我们将安装必要的Nuget软件包。首先,我们将搜索v7 recyclerview。向下滚动直到看到Xamarin Android Support Library - v7 RecyclerView。选择它,然后单击“添加软件包”

或者,Android Support Library V7 RecyclerView可以作为Xamarin组件使用。为了添加组件,请Components在Solution Explorer中的Android项目中右键单击,然后单击Get More Components。

在出现的“组件存储”窗口中,搜索RecyclerView。在搜索列表中,选择Android Support Library V7 RecyclerView。然后点击Add to App。组件被添加到项目中。

下一步是将RecyclerView添加到页面。在axml(布局)文件中,我们可以添加RecyclerView如下内容。

<android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

对于基本的标准实现,RecyclerView至少需要设置两个帮助器类:Adapter和ViewHolder。Adapter放大项目布局并将数据绑定到RecyclerView中显示的视图。ViewHolder查找并存储视图引用。视图持有者还有助于检测项目视图的点击。

这是适配器类的基本示例

public class MyAdapter : RecyclerView.Adapter
{
    string [] items;

    public MyAdapter (string [] data)
    {
        items = data;
    }

    // 创建新视图(由布局管理器调用)
    public overrideRecyclerView.ViewHolderOnCreateViewHolder (ViewGroup parent, int viewType)
    {   
        // 设置视图的大小,边距,填充和布局参数
        var tv = new TextView (parent.Context);
       tv.SetWidth(200);
       tv.Text= "";

        var vh = new MyViewHolder (tv);
        return vh;
    } 

    // 替换视图的内容(由布局管理器调用)
    public override void OnBindViewHolder (RecyclerView.ViewHolder viewHolder, int position)
    {
        var item = items [position];

        // 用该元素替换视图的内容
        var holder = viewHolder as MyViewHolder;
        holder.TextView.Text = items[position];
    }

    public override int ItemCount {
        get {
            return items.Length;
        }
    }
}

在该OnCreateViewHolder方法中,我们首先为View充气,并创建ViewHolder类的实例。该实例必须返回。当需要新的ViewHolder实例时,适配器将调用此方法。不会为每个单元格调用此方法。一旦RecyclerView具有足够的单元格来填充视图,它将重新使用从View中滚动出来的旧单元格来存储其他单元格。

OnBindViewHolder适配器调用该回调以在指定位置显示数据。此方法应更新itemView的内容以反映给定位置的项目。

由于单元格仅包含一个TextView,因此我们可以使用一个简单的ViewHolder,如下所示。

public class MyViewHolder :RecyclerView.ViewHolder
{
    public TextView TextView { get; set; }


    public MyViewHolder (TextView v) : base (v)
    {
        TextView = v;
    }
}

下一步是连接Activity。

RecyclerView mRecyclerView;
MyAdapter mAdapter;
protected override void OnCreate (Bundle bundle)
{
   base.OnCreate(bundle);
    SetContentView (Resource.Layout.Main);
    mRecyclerView = FindViewById<RecyclerView> (Resource.Id.recyclerView);

    // 插入线性布局管理器:
    var layoutManager = new LinearLayoutManager (this) { Orientation =LinearLayoutManager.Vertical};
   mRecyclerView.SetLayoutManager(layoutManager);
   mRecyclerView.HasFixedSize= true;

    var recyclerViewData = GetData();
    // 插入我的适配器:
    mAdapter = new MyAdapter (recyclerViewData);
   mRecyclerView.SetAdapter(mAdapter);
}

string[] GetData()
{ 
     string[] data;
     .
     .
     .
     return data;
}

LayoutManager类负责在RecyclerView中测量和放置项目视图,并确定何时回收用户不再可见的项目视图的策略。在之前RecyclerView,我们必须ListView像在垂直滚动列表中那样使用单元格排列,并在GridView二维可滚动网格中显示项目。但是现在我们可以通过设置不同的LayoutManger来使用RecyclerView实现这两个目标。LinearLayoutManager像在ListView中一样GridLayoutManager排列单元格,并以Grid方式排列单元格。

 类似资料:
  • C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互作用的对象组成。一个对象采取的动作称为方法。 相同种类的对象通常具有相同的属性,或者说,是在相同的类中。 例如,以 Rectangle(矩形)对象为例。它具有 length 和 width 属性。 根据设计,它可能需要接受这些属性值、计算面积和显示细节的方法。 让我们来看看一个 Rectangle(矩形)类的实现,并借此讨论

  • 不要被各种关于 reducers, middleware, store 的演讲所蒙蔽 —— Redux 实际是非常简单的。如果你有 Flux 开发经验,用起来会非常习惯。没用过 Flux 也不怕,很容易! 下面的教程将会一步步教你开发简单的 Todo 应用。 Action Reducer Store 数据流 搭配 React 示例:Todo 列表

  • StackExchange.Redis 中核心对象是在 StackExchange.Redis 命名空间中的 ConnectionMultiplexer 类,这个对象隐藏了多个服务器的详细信息。 因为ConnectionMultiplexer要做很多事,它被设计为在调用者之间可以共享和重用。 你不应该在执行每一个操作的时候就创建一个 ConnectionMultiplexer. 它完全是线程安全的

  • 本部分介绍了 ES6 中的常用基本概念,旨在让大家对 ES6 有个初步的理解。具体内容包括: 变量 字符串 数值 数组 函数 对象 正则 集合 Symbol

  • 路由配置 路由匹配原理 History 默认路由(IndexRoute)与 IndexLink

  • 只是打印出 hello world 肯定是不够的,是吗?你会希望做得比这还要多——你想要输入一些内容,操纵它,然后从中得到一些输出出来的内容。我们可以在 Python 中通过使用变量与常量来实现这一目标,在本章中我们还会学习其它的一些概念。自本章起,书中将出现大量程序源代码内容,在源代码中会包含一些英文语句或者英文注释。为保持源代码整体美观以及避免其它不必要的改动,在代码内容中出现的英文语句将会保

  • 本章主要介绍两个方面的内容: 字符编码 输入和输出 其中,字符编码的概念很重要,不管你用的是 Python2 还是 Python3,亦或是 C++ 等其他编程语言,希望读者厘清这个概念,当遇到 UnicodeEncodeError 和 UnicodeDecodeError 时才能从容应对,而不是到处查找资料。

  • 我们用一个最简单的程序来开始对GTK的介绍,下面的程序将创造一个200×200像素的窗体。 新建一个名为 example-0.c 的文件,写入如下内容: #include <gtk/gtk.h> int main (int argc, char *argv[]) { GtkWidget *window; gtk_init (&argc, &argv); window