zoukankan      html  css  js  c++  java
  • Mono For Android 实现索引分段器效果

    这两天看了个Demo,自己也动手写了下,觉得效果还不错,分享一下!

    主要是利用ListActivity中自带了一个ListView和ListAdapter来实现的,当然也可以在一般的Activity中添加ListView和ListAdapter来实现。具体代码如下:

    显示自定义的适配器的实现:

    //HomeScreenAdapter.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.Views;
    using Android.Widget;
    
    namespace ListViewAdapter
    {
        [Activity(Label = "ListViewAdapter")]
        public class HomeScreenAdapter : BaseAdapter<string>
        {
            private string[] items;
            private Activity context;
    
            public HomeScreenAdapter(Activity context, string[] items)
                : base()
            {
                this.context = context;
                this.items = items;
            }
            public override string this[int position]
            {
                get { return items[position]; }
            }
    
            public override int Count
            {
                get { return items.Length; }
            }
    
            public override long GetItemId(int position)
            {
                return position;
            }
    
            public override View GetView(int position, View convertView, ViewGroup parent)
            {
                View view = convertView;
                if (view == null)
                {
                    view = context.LayoutInflater.Inflate(Android.Resource.Layout.SimpleListItem1, null);
                }
                view.FindViewById<TextView>(Android.Resource.Id.Text1).Text = items[position];
                return view;
            }
        }
    }

    自定义适配器实现之后,只要将它赋给ListActivity中ListAdapter成员就可以了。

    下面看看主类HomeScreen.cs的实现:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    
    using Android.App;
    using Android.Content;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Android.OS;
    
    namespace SectionIndex
    {
        [Activity(Label = "SectionIndex", MainLauncher = true, Icon = "@drawable/icon")]
        public class HomeScreen : ListActivity
        {
            private string[] items;
    
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
                
                //用于存放文本文件的List
                List<string> veges = new List<string>();
                //利用流来打开文本文件
                Stream seedDataStream = Assets.Open(@"VegeData.txt");
                //将文本文件内容读入veges中
                //StringBuilder sb = new StringBuilder();
                using (StreamReader reader = new StreamReader(seedDataStream))
                {
                    while (!reader.EndOfStream)
                    {
                        veges.Add(reader.ReadLine());
                    }
                }
                //将veges中的元素进行排序,比较器为匿名函数构成的委托
                veges.Sort((x,y)=>{ return x.CompareTo(y); } );
                //将列表中的元素存入数组中
                items = veges.ToArray();
    
            }
            protected override void OnListItemClick(ListView l, View v, int position, long id)
            {
                var t = items[position];
                Toast.MakeText(this, t, ToastLength.Short).Show();
                Console.WriteLine("Clicked on: " + t);
            }
        }
    }
    

      其中VegesData.txt为要读取的文本文件:其内容如下:

    Beet greens
    Bitterleaf
    Bok choy
    Broccoli Rabe
    Brussels sprout
    Cabbage
    Catsear
    Celery
    Celtuce
    Ceylon spinach
    Chard
    Chaya
    Chickweed
    Chicory
    Chinese cabbage
    Chinese Mallow
    Chrysanthemum leaves
    Collard greens
    Corn salad
    Cress
    Dandelion
    Endive
    Epazote
    Fat hen
    Fiddlehead
    Fluted pumpkin
    Garden Rocket
    Golden samphire
    Good King Henry
    Greater Plantain
    Kai-lan
    Kale
    Komatsuna
    Kuka
    Lagos bologi
    Lamb's lettuce
    Land cress
    Lettuce
    Lizard's tail
    Melokhia
    Mizuna greens
    Mustard
    Napa cabbage
    New Zealand Spinach
    Orache
    Pak choy
    Paracress
    Pea sprouts/leaves
    Poke
    Radicchio
    Samphire
    Sea beet
    Sea kale
    Sierra Leone bologi
    Soko
    Sorrel
    Spinach
    Summer purslane
    Swiss chard
    Tatsoi
    Turnip greens
    Watercress
    Water spinach
    Winter purslane
    Yarrow
    Avocado
    Bell pepper
    Bitter melon/Bitter gourd
    Courgette
    Cucumber
    Ivy Gourd
    Eggplant/Aubergine/Brinjal
    Pumpkin
    Squash
    Sweet corn aka corn; aka maize
    Sweet pepper
    Tinda
    Tomatillo
    Tomato
    Winter melon
    West Indian gherkin
    Zucchini
    Artichoke
    Broccoli
    Cauliflower
    Courgette flowers
    Squash blossoms
    American groundnut
    Azuki bean
    Black-eyed pea
    Chickpea
    Common bean
    Drumstick
    Dolichos bean
    Fava bean
    Garbanzo
    Green bean
    Guar
    Gumbo
    Horse gram
    Indian pea
    Lentil
    Lima Bean
    Moth bean
    Mung bean
    Okra
    Pea
    Peanut
    Pigeon pea
    Ricebean
    Runner bean
    Snap pea
    Snow pea
    Soybean
    Tarwi
    Tepary bean
    Urad bean
    Velvet bean
    Winged bean
    Yardlong bean
    Asparagus
    Cardoon
    Celeriac
    Celery
    Elephant Garlic
    Florence fennel
    Garlic
    Kohlrabi
    Kurrat
    Leek
    Lotus root
    Nopal
    Onion
    Spring Onion/Scallion
    Prussian asparagus
    Shallot
    Welsh onion
    Wild leek
    Ahipa
    Arracacha
    Bamboo shoot
    Beetroot
    Burdock
    Broadleaf arrowhead
    Camas
    Canna
    Carrot
    Cassava
    Chinese artichoke
    Daikon
    Earthnut pea
    Elephant Foot yam
    Ensete
    Ginger
    Gobo
    Hamburg parsley
    Jerusalem artichoke
    Jícama
    Manioc
    Mooli
    Parsnip
    Pignut
    Plectranthus
    Potato
    Prairie turnip
    Radish
    Horseradish
    Rutabaga
    Salsify
    Scorzonera
    Skirret
    Swede
    Sweet Potato or Kumara
    Taro
    Ti
    Tigernut
    Turnip
    Ulluco
    Water chestnut
    Yacón
    Yam
    

      关键部分就是如何实现ISectionIndexer这个接口。

  • 相关阅读:
    DSP builder安装指南(以9.1为例)
    浅谈FPGA电脑
    Altera 在线资源使用
    Altium Designer 发现的机密——摘自CRAZY BINGO
    dom4j 练习
    java 工程和类等路径汇总
    读取xml文件基于xpath
    简化 XML 读写
    Java GUI 开发专题
    java中路径示例
  • 原文地址:https://www.cnblogs.com/rainmonth/p/3210391.html
Copyright © 2011-2022 走看看