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这个接口。
Mono For Android 实现索引分段器效果的更多相关文章
- Mono For Android中完美使用百度地图SDK(v2.1.2&v2.1.3)(转)
在Xamarin Mono For Android的开发中,如果要使用第三方的jar,就必须进行绑定.通过创建Java Bindings Library项目来自动生成C#到java的代码映射代码,最终 ...
- Android(4)—Mono For Android 第一个App应用程序
0.前言 年前就计划着写这篇博客,总结一下自己做的第一个App,却一直被新项目所累,今天抽空把它写完,记录并回顾一下相关知识点,也为刚学习Mono的同学提供佐证->C#也是开发Android的! ...
- mono for android学习过程系列教程(2)
接着上一讲继续开始写,今天介绍的是安卓的基本组成结构. 在大多数情况下,MONO FOR ANDROID的命名空间和Android的命名空间 是互相映射的.有时候需要大小写,非字母数字字符的用法以及名 ...
- Android(5)— Mono For Android 两个功能型外包
0.前言 距上一篇博文貌似很久了,其中原因种种,归根结底是自己没有坚持好,没有静下心来归纳总结,希望从这一刻起每个月坚持写两篇.(哈哈,突然想起老师说起一句话, 晚上在被窝里悄悄发誓好好学习,第二天涛 ...
- 为Elasticsearch添加中文分词,对比分词器效果
http://keenwon.com/1404.html Elasticsearch中,内置了很多分词器(analyzers),例如standard (标准分词器).english(英文分词)和chi ...
- android的布局管理器
理论上通过setContentView(view)能够把一个view设置到activity中,但当你有很多个view控件的时候,就需要用android的布局管理器来管理view控件了. android ...
- UISegmentedControl 分段器加载不同的viewcontroller
#import <UIKit/UIKit.h> @interface MJSegmentViewController : UIViewController /** * @brief 设置切 ...
- android中设置Animation 动画效果
在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation ...
- Android 实现书籍翻页效果----升级篇
自从之前发布了<Android 实现书籍翻页效果----完结篇 >之后,收到了很多朋友给我留言,前段时间由于事情较多,博客写得太匆忙很多细节地方没有描述清楚.所以不少人对其中的地方有不少不 ...
随机推荐
- JavaScript 数组操作备忘
数组的定义: 方法1. var mycars=new Array()mycars[0]="Saab"mycars[1]="Volvo"mycars[2]=&qu ...
- Python 自学笔记(一)环境搭建
一,关于Python的介绍 关于Python的介绍,我不想多说了,网上随便一搜,很多介绍,这里我主要写下我的自学Python的 过程,也是为了促进我能继续学习下去. 二,环境搭建 1,这里我只讲解Wi ...
- windows下安装配置Xampp
XAMPP是一款开源.免费的网络服务器软件,经过简单安装后,就可以在个人电脑上搭建服务器环境.本文为大家介绍Windows中安装XAMPP(Apache+Mysql+PHP)及使用方法及其相关问题的总 ...
- Nginx 教程的连载计划
下面以教程系列为单位,列举出了已经发表和计划发表的连载教程: Nginx 新手起步 Nginx 是如何匹配 URI 的 Nginx 变量漫谈 Nginx 配置指令的执行顺序 Nginx 的 if 是邪 ...
- 1.elk 入门示例
zjtest7-frontend:/usr/local/logstash-2.3.4/bin# ./logstash -e 'input{stdin{}} output{stdout{codec=&g ...
- js调试
在chrome下的调试案例 1.console.log() $("#typeid").change(function(){ var id = $(this).val(); cons ...
- 梦游前端,JavaScript兼容性
前端兼容问题出现的原因 何为操作系统?操作系统(Operating System)是管理和控制计算机硬件与软件资源的计算机程序.是的,任何的应用软件必须在操作系统的支持下运行. 大家会疑问?为什么我要 ...
- poj 2632 Crashing Robots_模拟
做的差点想吐,调来调去,编译器都犯毛病,wlgq,幸好1a. 题意:给你机器人怎走的路线,碰撞就输出 #include <cstdlib> #include <iostream> ...
- Makefile里面的$(MAKE)到底是啥
[已解决]Makefile里面的$(MAKE)到底是啥 [复制链接] http://bbs.chinaunix.net/thread-4164499-1-1.html make 定义了很多默认变量,像 ...
- 使用StoryBoard设置Scrollview的横向滚动不用一行代码
1).创建一个空工程Single类型的工程,然后打开故事版(StoryBoard)在ViewController上添加scrollview 2).然后对scrollview添加约束,上下左右全部都是0 ...