SpinnerSearchableCustomObject 1.1.3

dotnet add package SpinnerSearchableCustomObject --version 1.1.3                
NuGet\Install-Package SpinnerSearchableCustomObject -Version 1.1.3                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SpinnerSearchableCustomObject" Version="1.1.3" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SpinnerSearchableCustomObject --version 1.1.3                
#r "nuget: SpinnerSearchableCustomObject, 1.1.3"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SpinnerSearchableCustomObject as a Cake Addin
#addin nuget:?package=SpinnerSearchableCustomObject&version=1.1.3

// Install SpinnerSearchableCustomObject as a Cake Tool
#tool nuget:?package=SpinnerSearchableCustomObject&version=1.1.3                

SpinnerSearchableCustomObject V1.1.3

Xamarin android spinner searchable

Version License

<img src="https://raw.github.com/Rainbowdashx1/SpinnerSearchableCustomObject/master/SpinnerSearchableCustomObjectImg.jpg" width="700" height="400">

Uso

Hay solo un objeto con el que podemos trabajar

  • SpinnerCustomObject.SpinnerCustomObj (Compatible API >= 23)

Código de ejemplo:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main">

    <SpinnerCustomObject.SpinnerCustomObj
        android:id="@+id/spiner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>
    
</RelativeLayout>

Instancia de spinner

SpinnerCustomObj una vez declarado en xml(vista) se puede instanciar como cualquier otro componente android Ejemplo:

public class Activity1 : AppCompatActivity
{
    SpinnerCustomObject.SpinnerCustomObj SCOX;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.activity_main);
        SCOX = FindViewById<SpinnerCustomObject.SpinnerCustomObj>(Resource.Id.spiner1);
    }
}

Agregar datos a spinner

Puede usar el método SetData para agregar un List del objeto que necesite mostrar en el spinner, como se muestra en el código a continuación:

Primero creare un objeto

using SpinnerCustomObject.AttributeCustom;

namespace Test
{
    public class Testobj
    {
        [Texto] // Muy importante  el atributo "Texto"
        public string Dato1 { get; set; } // Esta propiedad se usara mostrar en el spinner
        public string Dato2 { get; set; }
        public string Dato3 { get; set; }
        public string Dato4 { get; set; }
        public string Dato5 { get; set; }
    }
}
public class Activity1 : AppCompatActivity
{
    SpinnerCustomObject.SpinnerCustomObj SCOX;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.activity_main);

        List<Testobj> tt = new List<Testobj>();

        tt.Add(new Testobj { Dato1 = "A", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
        tt.Add(new Testobj { Dato1 = "B", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
        tt.Add(new Testobj { Dato1 = "C", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
        tt.Add(new Testobj { Dato1 = "D", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
        tt.Add(new Testobj { Dato1 = "E", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });

        SCOX = FindViewById<SpinnerCustomObject.SpinnerCustomObj>(Resource.Id.spiner1);

        SCOX.SetData(this.SupportFragmentManager, tt);
    }
}

Personalización del panel spinner

  • TextColorSpinner Da color al texto mostrado en el spinner(por defecto negro)
  • BackGroundColorSpinner cambia el color de fondo del panel spinner(por defecto blanco).

Evento y funciones spinner

Puede acceder al dato seleccionado en el spinner desde el evento GetDataEvent que se ejecutara cuando se seleccione un item dentro del panel spinner o puede acceder al contenido en cualquier momento con la función GetDataClick que retornara el dato tipo object al cual se debe realizar una conversión a su objeto inicial

SpinnerSearchableCustomObject V1.1.2

Uso

Hay tres objetos con los que podemos trabajar

  • SpinnerCustomObject.SpinnerCustomObjX (compatible con proyectos androidx)
  • SpinnerCustomObject.SpinnerCustomObjV4 (compatible con proyectos Android.Support.V4)
  • SpinnerCustomObject.SpinnerCustomObjV7 (compatible con proyectos Android.app)

Código de ejemplo (compatible con proyectos androidx) :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main">

    <SpinnerCustomObject.SpinnerCustomObjX
        android:id="@+id/spiner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>
    
</RelativeLayout>

Instancia de spinner

SpinnerCustomObj una vez declarado en xml(vista) se puede instanciar como cualquier otro componente android Ejemplo:

public class Activity1 : AppCompatActivity
{
    SpinnerCustomObject.SpinnerCustomObjX SCOX;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.activity_main);
        SCOX = FindViewById<SpinnerCustomObject.SpinnerCustomObjX>(Resource.Id.spiner1);
    }
}

Agregar datos a spinner

Puede usar el método SetData para agregar un List del objeto que necesite mostrar en el spinner, como se muestra en el código a continuación:

Primero creare un objeto

using SpinnerCustomObject.AttributeCustom;

namespace Test
{
    public class Testobj
    {
        [Texto] // Muy importante  el atributo "Texto"
        public string Dato1 { get; set; } // Esta propiedad se usara mostrar en el spinner
        public string Dato2 { get; set; }
        public string Dato3 { get; set; }
        public string Dato4 { get; set; }
        public string Dato5 { get; set; }
    }
}
public class Activity1 : AppCompatActivity
{
    SpinnerCustomObject.SpinnerCustomObjX SCOX;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.activity_main);

        List<Testobj> tt = new List<Testobj>();

        tt.Add(new Testobj { Dato1 = "A", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
        tt.Add(new Testobj { Dato1 = "B", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
        tt.Add(new Testobj { Dato1 = "C", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
        tt.Add(new Testobj { Dato1 = "D", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
        tt.Add(new Testobj { Dato1 = "E", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });

        SCOX = FindViewById<SpinnerCustomObject.SpinnerCustomObjX>(Resource.Id.spiner1);

        SCOX.SetData(this.SupportFragmentManager, tt);
    }
}

Personalización del panel spinner

  • TextColorSpinner Da color al texto mostrado en el spinner(por defecto negro)
  • BackGroundColorSpinner cambia el color de fondo del panel spinner(por defecto blanco).

Evento y funciones spinner

Puede acceder al dato seleccionado en el spinner desde el evento GetDataEvent que se ejecutara cuando se seleccione un item dentro del panel spinner o puede acceder al contenido en cualquier momento con la función GetDataClick que retornara el dato tipo object al cual se debe realizar una conversión a su objeto inicial

SpinnerSearchableCustomObject V1.0.0

Xamarin android spinner searchable

Uso

Hay dos objetos con los que podemos trabajar

List<SpinnerObjectRandom> SOR = new List<SpinnerObjectRandom>();
SOR.Add(new SpinnerObjectRandom { Dato1 = "A", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
SOR.Add(new SpinnerObjectRandom { Dato1 = "B", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
SOR.Add(new SpinnerObjectRandom { Dato1 = "C", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
SOR.Add(new SpinnerObjectRandom { Dato1 = "D", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
SOR.Add(new SpinnerObjectRandom { Dato1 = "E", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
SpinnerCustomV7 Spinn01; // Compatible con Android.Support.V7
Spinn01 = new SpinnerCustomV7(SOR);
List<SpinnerObjectRandom> SOR = new List<SpinnerObjectRandom>();
SOR.Add(new SpinnerObjectRandom { Dato1 = "A", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
SOR.Add(new SpinnerObjectRandom { Dato1 = "B", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
SOR.Add(new SpinnerObjectRandom { Dato1 = "C", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
SOR.Add(new SpinnerObjectRandom { Dato1 = "D", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
SOR.Add(new SpinnerObjectRandom { Dato1 = "E", Dato2 = "DATA2", Dato3 = "DATA3", Dato4 = "DATA4", Dato5 = "DATA5" });
SpinnerCustomV4 Spinn01; // Compatible con Android.Support.V4
Spinn01 = new SpinnerCustomV7(SOR);

El objeto que toma como parámetro en el constructor puede ser cualquier tipo de objeto pero debe tener el attribute [Texto] en la propiedad que se quiere mostrar en el spinner

using SpinnerCustomObject.AttributeCustom;
//Ejemplo objeto random
public class SpinnerObjectRandom
{
    [Texto]
    public string Dato1 { get; set; } // Esta propiedad se usara mostrar en el spinner
    public string Dato2 { get; set; }
    public string Dato3 { get; set; }
    public string Dato4 { get; set; }
    public string Dato5 { get; set; }
}

SpinnerSearchableCustomObject devuelve el objeto completo después del click, pero en necesario una conversión.

Spinn01.EventClickSpinner += (s, e) =>
{
    var Result = (SpinnerObjectRandom)e.SpinnerModel;
    Text01.Text = Result.Dato1;
    Spinn01.Dismiss();
};

Es necesario para la implementación utilizar un widget que permita levantar SpinnerSearchableCustomObject

TextView Text01 = FindViewById<TextView>(Resource.Id.TextView01);
Text01.Touch += Text01_Touch;
private void Text01_Touch(object sender, Android.Views.View.TouchEventArgs e)
{
    try
    {
        if (e.Event.Action == Android.Views.MotionEventActions.Down)
        {
            if (!Spinn01.IsVisible)
            {
                Spinn01.Show(FragmentManager, "TestSpinner");
            }
        }
    }
    catch (Exception ex) { }
}
Product Compatible and additional computed target framework versions.
.NET net6.0-android was computed.  net7.0-android was computed.  net8.0-android was computed. 
MonoAndroid monoandroid is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.3 482 7/2/2022
1.1.2 406 6/10/2022
1.0.0 494 6/13/2020