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 实现书籍翻页效果----完结篇 >之后,收到了很多朋友给我留言,前段时间由于事情较多,博客写得太匆忙很多细节地方没有描述清楚.所以不少人对其中的地方有不少不 ...
随机推荐
- Spring的注解学习(ioc,aop结合)
首先引入jar包 aspectjrt.jar aspectjweaver.jar 1.dao package com.dao; public interface OkpDao { public voi ...
- 三角形(hd1249)
三角形 Problem Description 用N个三角形最多可以把平面分成几个区域? Input 输入数据的第一行是一个正整数T(1<=T<=10000),表示测试数据的数量.然后 ...
- Eddy's research I
Eddy's research I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- ca 证书、签名
1.我现在没有个人CA证书,使用.中信建投网上交易,是如何保障安全的呢? 如果您目前没有个人CA证书,使用.中信建投网上交易,系统其实也是用CA证书的RSA体系进行加密的. 您在输入账户和密码进行登录 ...
- 深入浅出畅谈Zigbee
ZigBee采用802.15.4标准作为其对等通信的基础.该标准由ZigBee联盟(ZigBee Alliance)开发并管理.ZigBee Alliance是一家投资于该标准并在无线领域进行推广的联 ...
- js混淆 反混淆 在线
js反混淆地址:http://www.bm8.com.cn/jsConfusion/ 在线javascript 混淆http://www.moralsoft.com/jso-online/hdojso ...
- 【LeetCode练习题】Candy
分糖果 There are N children standing in a line. Each child is assigned a rating value. You are giving c ...
- lamp apache配置虚拟主机
You don't have permission to access /index.php on this server
- Hadoop--初识Hadoop
什么是Hadoop? 搞什么东西之前,第一步是要知道What(是什么),然后是Why(为什么),最后才是How(怎么做).但很多开发的朋友在做了多年项目以后,都习惯是先How,然后What,最后才是W ...
- 模块化的JavaScript
我们再一次被计算机的名词,概念笼罩. backbone.emberjs.spinejs.batmanjs 等MVC框架侵袭而来. CommonJS.AMD.NodeJS.RequireJS.SeaJS ...