Search This Blog

Sunday 10 December 2017

Search View Example In xamarin android

MainActivity.cs:

using Android.App;
using Android.Widget;
using Android.OS;
using Android.Content;
using System.Linq;

namespace DemoG
{
    [Activity(Label = "DemoG", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        fragment_List newFragment;
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
             SetContentView (Resource.Layout.Main);

            SearchView _search = FindViewById<SearchView>(Resource.Id.sv_name);
            _search.QueryTextChange += _search_QueryTextChange;

            newFragment = new fragment_List();
            var ft = FragmentManager.BeginTransaction();
            ft.Add(Resource.Id.fragment_container, newFragment);
            ft.Commit();
        }

        private void _search_QueryTextChange(object sender, SearchView.QueryTextChangeEventArgs e)
        {
            var searchedNames = (from a in newFragment.objname where a.PersonName.ToString().Contains(e.NewText.ToString()) select a).ToList();
            newFragment.mAdapter.setLatestNames(searchedNames);
            newFragment.mAdapter.NotifyDataSetChanged();
        }
    }
}

========================================================================
fragment_List.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using Android.Support.V7.Widget;

namespace DemoG
{
    public class fragment_List : Fragment
    {
        public RecyclerView mRecyclerView;
        public RecyclerView.LayoutManager mLayoutManager;
        public PhotoAlbumAdapter mAdapter;
        public List<PersonModel> objname;
        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Create your fragment here
        }

        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            View view = inflater.Inflate(Resource.Layout.recylerView_Fragment, container, false);
            mRecyclerView = view.FindViewById<RecyclerView>(Resource.Id.recyclerView);
            objname = new List<PersonModel>();
            objname.Add(new PersonModel { PersonName = "chiru", PersonPhoneNumber = "123456789" });
            objname.Add(new PersonModel { PersonName = "Arun", PersonPhoneNumber = "123456789" });
            objname.Add(new PersonModel { PersonName = "Venkatrao", PersonPhoneNumber = "123456789" });
            objname.Add(new PersonModel { PersonName = "subbu", PersonPhoneNumber = "123456789" });
            objname.Add(new PersonModel { PersonName = "ramesh", PersonPhoneNumber = "123456789" });
            objname.Add(new PersonModel { PersonName = "123", PersonPhoneNumber = "123456789" });
            objname.Add(new PersonModel { PersonName = "old", PersonPhoneNumber = "123456789" });

            mAdapter = new PhotoAlbumAdapter(objname);
            // Get our RecyclerView layout:
            mLayoutManager = new LinearLayoutManager(this.Activity);
            mRecyclerView.SetLayoutManager(mLayoutManager);
            // Plug the adapter into the RecyclerView:
            mRecyclerView.SetAdapter(mAdapter);

            return view;
        }

        internal static fragment_List NewInstance()
        {
            return new fragment_List();
        }
    }
    public class PhotoViewHolder : RecyclerView.ViewHolder
    {
        public TextView Caption { get; private set; }
        public TextView _PhoneNumber { get; private set; }
        public PhotoViewHolder(View itemView, Action<int> listener): base(itemView)
        {
            Caption = itemView.FindViewById<TextView>(Resource.Id.tv_personName);
            _PhoneNumber = itemView.FindViewById<TextView>(Resource.Id.tv_personPhoneNumber);
            itemView.Click += (sender, e) => listener(base.LayoutPosition);
        }
    }

    public class PhotoAlbumAdapter : RecyclerView.Adapter
    {
        public event EventHandler<int> ItemClick;
        public List<PersonModel> mPhotoAlbum;

        public PhotoAlbumAdapter(List<PersonModel> photoAlbum)
        {
            mPhotoAlbum = photoAlbum;
        }

        public void setLatestNames(List<PersonModel> photoAlbum)
        {
            this.mPhotoAlbum = photoAlbum;
        }

        // Create a new photo CardView (invoked by the layout manager):
        public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.details, parent, false);

            PhotoViewHolder vh = new PhotoViewHolder(itemView, OnClick);
            return vh;
        }

        // Fill in the contents of the photo card (invoked by the layout manager):
        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            PhotoViewHolder vh = holder as PhotoViewHolder;
            vh.Caption.Text = mPhotoAlbum[position].PersonName;
            vh._PhoneNumber.Text = mPhotoAlbum[position].PersonPhoneNumber;
        }

        // Return the number of photos available in the photo album:
        public override int ItemCount
        {
            get { return mPhotoAlbum.Count; }
        }

        // Raise an event when the item-click takes place:
        void OnClick(int position)
        {
            if (ItemClick != null)
                ItemClick(this, position);
        }
    }
}
=======================================================================
Main.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">
  <SearchView
    android:id="@+id/sv_name"
    android:queryHint="Search"
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"/>
  <FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  </FrameLayout>
</LinearLayout>
========================================================================
PersonModel:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;

namespace DemoG
{
   public class PersonModel
    {
        public string PersonName { set; get; }
        public string PersonPhoneNumber { set; get; }
    }
}
========================================================================
recylerView_Fragment.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.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:scrollbars="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</LinearLayout>
========================================================================
details.axml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:text="name"
    android:layout_weight="1"
    android:id="@+id/tv_personName"
    android:textSize="18dp"/>
  <TextView
    android:layout_marginRight="10dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="name"
    android:id="@+id/tv_personPhoneNumber"
    android:textSize="18dp"/>
</LinearLayout>

Tuesday 7 February 2017

validation

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace App2
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();

            et.TextChanged += Et_TextChanged;
        }
        private void Et_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (e.NewTextValue != "")
            {
                if (e.NewTextValue.StartsWith("."))
                {
                    return;
                }
                long value = (long)Convert.ToDouble(e.NewTextValue);
                if (value <= 90.0)
                {
                    et.Text = e.NewTextValue;
                }
                else
                {
                    et.Text = et.Text.Remove(et.Text.Length - 1);
                }
                if (et.Text.Length >= 3)
                {
                    char[] chars = et.Text.ToCharArray();
                    if (chars[2] != '.')
                    {
                        et.Text = et.Text.Remove(et.Text.Length - 1);
                    }
                    else
                    {
                        if (chars[2] == '.')
                        {
                            if (et.Text.Length <= 5)
                            {
                                et.Text = e.NewTextValue;
                            }
                            else
                            {
                                et.Text = et.Text.Remove(et.Text.Length - 1);
                            }
                        }
                        else
                        {
                            et.Text = et.Text.Remove(et.Text.Length - 1);
                        }
                    }
                }
            }
        }
    }
}

Wednesday 1 February 2017

pdf Android dependecy

https://forums.xamarin.com/discussion/25746/how-to-open-pdf-in-xamarin-forms
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System.IO;
using System.Threading.Tasks;
using App2.Droid;
using Java.IO;
using Xamarin.Forms;

[assembly: Xamarin.Forms.Dependency(typeof(SaveAndLoad_Android))]
namespace App2.Droid
{
    public class SaveAndLoad_Android : ISaveAndLoad
    {
        public async Task Save(string fileName, String contentType, MemoryStream stream)
        {
            string root = null;
            if (Android.OS.Environment.IsExternalStorageEmulated)
            {
                root = Android.OS.Environment.ExternalStorageDirectory.ToString();
            }
            else
                root = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);

            Java.IO.File myDir = new Java.IO.File(root + "/Documents");
            myDir.Mkdir();

            Java.IO.File file = new Java.IO.File(myDir, fileName);

            if (file.Exists()) file.Delete();

            try
            {
                FileOutputStream outs = new FileOutputStream(file);
                outs.Write(stream.ToArray());

                outs.Flush();
                outs.Close();
            }
            catch (Exception e)
            {
            }
            if (file.Exists())
            {
                Android.Net.Uri path = Android.Net.Uri.FromFile(file);
                string extension = Android.Webkit.MimeTypeMap.GetFileExtensionFromUrl(Android.Net.Uri.FromFile(file).ToString());
                string mimeType = Android.Webkit.MimeTypeMap.Singleton.GetMimeTypeFromExtension(extension);
                Intent intent = new Intent(Intent.ActionView);
                intent.SetDataAndType(path, mimeType);
                Forms.Context.StartActivity(Intent.CreateChooser(intent, "Choose App"));
            }
        }
    }
}

pdf PCL Interface

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App2
{
   public interface ISaveAndLoad
    {
        Task Save(string filename, string contentType, MemoryStream stream);
    }
}

pdfButton Click

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;

namespace App2
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            btnRecord.Clicked += BtnRecord_Clicked;
        }

        private void BtnRecord_Clicked(object sender, EventArgs e)
        {
            PdfFixedDocument document = new PdfFixedDocument();
            PdfPage page = document.Pages.Add();
            PdfStandardFont helvetica = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);
            PdfBrush brush = new PdfBrush();
            page.Graphics.DrawString("World is a common name for the whole of human civilization, specifically human experience, history, or the human condition in general, worldwide, i.e. anywhere on Earth or pertaining to anywhere on earth.", helvetica, brush, 100, 100);
            MemoryStream stream = new MemoryStream();
            document.Save(stream);

            DependencyService.Get<ISaveAndLoad>().Save("HelloWorld.pdf", "application/pdf", stream);
        }
    }
}

Sunday 15 January 2017

DatePicker

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace App2
{
    public partial class MainPage : ContentPage
    {
        bool dateselected = false;
        public MainPage()
        {
            InitializeComponent();
            dPicker.DateSelected += DPicker_DateSelected;
            dPicker.MaximumDate = DateTime.Now;
            dPicker.Unfocused += DPicker_Unfocused;

            btnclear.Clicked += Btnclear_Clicked;
        }
        private void DPicker_DateSelected(object sender, DateChangedEventArgs e)
        {
            dateselected = true;
            lblDate.Text = dPicker.Date.ToString();
        }
        private void DPicker_Unfocused(object sender, FocusEventArgs e)
        {
            if (dateselected == true)
            {
                lblDate.Text = dPicker.Date.ToString();
            }
            else
            {
                lblDate.Text = DateTime.Now.ToString();
            }
        }
        private void Btnclear_Clicked(object sender, EventArgs e)
        {
            lblDate.Text = "- - - - -";
        }
    }
}


<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:App2"
             x:Class="App2.MainPage">
  <ContentPage.Content>
    <StackLayout>
      <DatePicker x:Name="dPicker" VerticalOptions="Center" HorizontalOptions="Center"/>
      <Label x:Name="lblDate"  FontSize="20" Text="- - - - -" VerticalOptions="Center" HorizontalOptions="Center"/>
        <Button x:Name="btnclear" Text="Clear" VerticalOptions="Center" HorizontalOptions="Center"/>
    </StackLayout>
  </ContentPage.Content>
 
</ContentPage>

Thursday 5 January 2017

Range slider Ui Class

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:CustomSlider"
             x:Class="CustomSlider.MainPage">
   <ContentPage.Content>
<StackLayout>
<StackLayout Orientation="Vertical" >
<StackLayout Orientation="Horizontal" HorizontalOptions="EndAndExpand">
<Label x:Name="SeverityleftValue" VerticalOptions="Start" Text="0" FontSize="20" />
<Label Text="-" VerticalOptions="Center" FontSize="20" />
<Label x:Name="SeverityrightValue" VerticalOptions="End" Text="10" FontSize="20" />
</StackLayout>
<local:RangeSlider x:Name="rsldrSeverity" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"  ActiveColorValue="#00A0D4" NormalColorValue="#95D0E7"/>
<StackLayout Orientation="Horizontal" HorizontalOptions="EndAndExpand">
<Label x:Name="DurationleftValue" VerticalOptions="Start" Text="0" FontSize="20" />
<Label Text="-" VerticalOptions="Center" FontSize="20" />
<Label x:Name="DurationrightValue" VerticalOptions="End" Text="25" FontSize="20" />
</StackLayout>
<local:RangeSlider x:Name="rsldrDuraton" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"  ActiveColorValue="#06A330" NormalColorValue="#CEEBD1"/>
</StackLayout>
</StackLayout>
</ContentPage.Content>
</ContentPage>



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace CustomSlider
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();

rsldrSeverity.LowerValue = 0;
rsldrSeverity.UpperValue = 10;
rsldrSeverity.MinimumValue = 0;
rsldrSeverity.MaximumValue = 10;
rsldrSeverity.TextSize = 20;
rsldrSeverity.BarHeight = 10;

rsldrDuraton.BarHeight = 10;

rsldrDuraton.SliderNameValue = "IsDuration";
rsldrSeverity.SliderNameValue = "IsSeverity";

//rsldrDuraton.ActiveColorValue = Color.FromRgb(6, 163, 48);
//rsldrDuraton.NormalColorValue = Color.FromRgb(206,235,209);

rsldrDuraton.LowerValue = 0;
rsldrDuraton.UpperValue = 25;
rsldrDuraton.MinimumValue = 0;
rsldrDuraton.MaximumValue = 25;
rsldrDuraton.TextSize = 20;


//rangeSlider.ShowTextAboveThumbs = true;

rsldrSeverity.LowerValueChanged += RangeSlider_LowerValueChanged;
rsldrSeverity.UpperValueChanged += RangeSlider_UpperValueChanged;




rsldrDuraton.LowerValueChanged += RsldrDuraton_LowerValueChanged;
rsldrDuraton.UpperValueChanged += RsldrDuraton_UpperValueChanged;

}
private void RangeSlider_UpperValueChanged(object sender, EventArgs e)
{
int myIntRight = (int)Math.Ceiling(((sender as RangeSlider).UpperValue));
SeverityrightValue.Text = myIntRight.ToString();
}

private void RangeSlider_LowerValueChanged(object sender, EventArgs e)
{
int myIntLeft = (int)Math.Ceiling(((sender as RangeSlider).LowerValue));
SeverityleftValue.Text = myIntLeft.ToString();
}

void RsldrDuraton_UpperValueChanged(object sender, EventArgs e)
{
int myIntRightDuration = (int)Math.Ceiling(((sender as RangeSlider).UpperValue));
DurationrightValue.Text = myIntRightDuration > 24 ? "24+" : myIntRightDuration.ToString();
}

void RsldrDuraton_LowerValueChanged(object sender, EventArgs e)
{
int myIntLeftDuration = (int)Math.Ceiling(((sender as RangeSlider).LowerValue));
DurationleftValue.Text = myIntLeftDuration.ToString();
}
}
}