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 实现书籍翻页效果----完结篇 >之后,收到了很多朋友给我留言,前段时间由于事情较多,博客写得太匆忙很多细节地方没有描述清楚.所以不少人对其中的地方有不少不 ...
随机推荐
- UIButton控件
UIButton继承关系如下: UIButton-->UIControl-->UIView-->UIResponder-->NSObject 由于继承层次过多,下面只重点介绍U ...
- javascript 事件设计模式
http://plkong.iteye.com/blog/213543 1. 事件设计概述 事件机制可以是程序逻辑更加清晰可见,在JavaScript中很多对象都有自己的事件,如:button有onc ...
- 【Sqlserver清空数据库中所有表数据】
脚本: CREATE PROCEDURE sp_DeleteAllData AS EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT AL ...
- [Leetcode][Python]45: Jump Game II
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 45: Jump Game IIhttps://oj.leetcode.com ...
- poj 1664 放苹果_整数拆分
题意:略 用手机敲的代码真是泪流满面,终于过了 #include<iostream> using namespace std; int dp[110][110]; void solve() ...
- 无组件客户端js图片压缩
<div class="free-upload"> <p>上传您的约会照片,一张合影.一张票据哦!</p> <div class=&quo ...
- sql server中的 stuff 函数
STUFF eg: SELECT stuff(12345,3,1,'-') result: 12-45 以下文段来自:http://www.cnblogs.com/lingxyd/archive ...
- C#初步接触
如同非常多刚開始学习的人一样,刚接触C#的时候,也是一头雾水,学习了好长时间,都搞不清楚一些基本名称是什么.什么是C#?什么是.net?什么是visual studio?它们之间有什么关系?以下我们就 ...
- Yii2权威指南中文版及众包翻译平台
Yii2在今年4月份公布了beta版本号,预计下半年会推出正式版本号(可用于生产环境). Yii2使用了新的PHP语法特性(PHP5.4+)并集成了大量新的编程最佳实践, 如命名空间.响应式界面组件库 ...
- 【UNIX网络编程(二)】基本TCP套接字编程函数
基于TCP客户/server程序的套接字函数图例如以下: 运行网络I/O.一个进程必须做的第一件事就是调用socket函数.指定期望的通信协议类型. #include <sys/socket.h ...