本示例为通过媒体内容提供器获取本机中的图片显示在Gallery中。

活动中简单的初始化代码

private void InitGallery()
{
Gallery gallery = FindViewById<Gallery> (Resource.Id.gallery);
gallery.Adapter = new ImageAdapter (this);
}
ImageAdapter 类为自己定义的适配器,继承BaseAdapter类,其中核心代码为GetView方法。
BaseAdapter为抽象类必须实现指定方法,右键BaseAdapter类,选择Implement Abstract Class,添加要实现的方法。

ImageAdapter 的代码实现
public class ImageAdapter:BaseAdapter
{
private Context context; public ImageAdapter(Context context)
{
this.context = context;
} #region implemented abstract members of BaseAdapter
public override Java.Lang.Object GetItem (int position)
{
ImageCursor.MoveToPosition (position);
return ImageCursor.GetString ();
}
public override long GetItemId (int position)
{
return position;
}
public override View GetView (int position, View convertView, ViewGroup parent)
{
       //避免不断的销毁和创建新视图
if (convertView == null) {
ImageView imageView = new ImageView (context);
ImageCursor.MoveToPosition (position);
var imageUrl = ImageCursor.GetString ();
Console.WriteLine (imageUrl);
       //根据输出判断 MediaStore.Images.Media.InterfaceConst.Data 查询结果为图片路径
//imageView.SetImageURI (Android.Net.Uri.WithAppendedPath(MediaStore.Images.Media.ExternalContentUri,imageID));
imageView.SetImageURI (Android.Net.Uri.Parse(imageUrl));
imageView.SetScaleType (ImageView.ScaleType.FitCenter);
return imageView;
} else {
return convertView as ImageView;
}
}
public override int Count {
get {
return ImageCursor.Count;
}
}
#endregion private Android.Database.ICursor imageCursor;
public Android.Database.ICursor ImageCursor {
get{
if (imageCursor==null) {
imageCursor = GetImageCursor ();
}
return imageCursor;
}
set{ imageCursor = value; }
} //查询本机图片
private Android.Database.ICursor GetImageCursor(){
return (context as Activity).ManagedQuery (MediaStore.Images.Media.ExternalContentUri,
new string[] {MediaStore.Images.Media.InterfaceConsts.Data},null,null,null);
}
}

注意:一定要保证本机或者模拟器中存在图片文件,不然会报出No entry for content的异常。

此外学的过程中了解到一个Xamarin组件,地址:http://components.xamarin.com/view/xamarin.mobile,不知道效果怎么要。

xamarin android——数据绑定到控件(二)的更多相关文章

  1. xamarin android——数据绑定到控件(四)

    本文为通过自定义列表适配器定义ListView,以上文为基础,基于ListActivity. 定义列表项布局,包含一个图片显示,标题和描述 <LinearLayout xmlns:android ...

  2. xamarin android——数据绑定到控件(三)

    如果当前活动中,只存在一个listview视图,可以借助ListActivity快速的实现一个列表,即当前Activity继承ListActivity.在OnCreate方法中简单的两行代码,就可以创 ...

  3. xamarin android——数据绑定到控件(一)

    mono for android 中光标由ICursor 接口标识,该接口公开了操作结果数据集的所有方法.光标的使用非常消耗系统资源,所以不使用时应该光比光标.可以通过StartManagingCur ...

  4. 安卓控件 仪表盘控件 柱状图控件 曲线控件 xamarin.android 分类器 瓶子控件 报警控件 水箱控件 进度条控件等

    本篇博客主要介绍一个控件库,HslControls.dll 的界面,这个控件库支持winform,winform的参考另一篇文章:https://www.cnblogs.com/dathlin/p/1 ...

  5. Xamarin.android 重写axml控件

    https://www.cnblogs.com/lonelyxmas/p/5632694.html <Laco: 用来用引指定的控件            android:layout_widt ...

  6. Xamarin.Android DatePickerFragment 日期控件

    MainActivity 代码: public class MainActivity : Activity { TextView _dateDisplay; Button _dateSelectBut ...

  7. xamarin.android 给View控件 添加数字提醒效果-BadgeView

    本文代码从java项目移植到.net项目   java开源项目:https://github.com/jgilfelt/android-viewbadger using System; using S ...

  8. [置顶] Android常用适配器控件

    Android常用适配器控件 列表控件用于显示数据集合,Android不是使用一种类型的控件管理显示和数据,而是将这两项功能分布用列表控件和适配器来实现.列表控件扩展了android.widget.A ...

  9. Android 中常见控件的介绍和使用

    1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...

随机推荐

  1. 史上最浅显易懂的Git教程!

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

  2. C++指针和引用

     ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名.  ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使用时无需解引用(*),指 ...

  3. UNIX基础知识之信号

    本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. 信号(signal)是通知进程已发生某种情况的 ...

  4. Naive Bayes Algorithm

    朴素贝叶斯的核心基础理论就是贝叶斯理论和条件独立性假设,在文本数据分析中应用比较成功.朴素贝叶斯分类器实现起来非常简单,虽然其性能经常会被支持向量机等技术超越,但有时也能发挥出惊人的效果.所以,在将朴 ...

  5. css笔记10:多个id选择器/类选择器包含相同部分问题的探讨

    有些时候,我们可以将多个class选择器或者id选择器,html选择器的共同部分提取出来,写在一起,这样的好处是是可以简化css文件 1.首先我们先看一段代码.css,如下: @charset &qu ...

  6. scrollerView 轮番图

    scrollView 写在了一个 view 的里面,需要用的时候可以直接拿来用,很方便 // // TopScrollView.h // TabBar框架 // // Created by 叶炯 on ...

  7. 在IIS7.5上添加.NET4.0程序的虚拟目录时提示ASP.NET 4.0尚未在 Web 服务器上注册

    使用VS2010创建web应用程序时出现如下提示: ASP.NET 4.0尚未在 Web 服务器上注册. 解决方法: 首先IIS应用程序池添加 net framework4.0版本. 接着找到C:\W ...

  8. 4k 对齐,你准备好了吗?

    什么是 4k 对齐? 其实与 “ 4K对齐 ” 相关联的是一个叫做 “ 高级格式化 ” 的分区技术.“ 高级格式化 ” 是国际硬盘设备与材料协会为新型数据结构格式所采用的名称.这是主要鉴于目前的硬盘容 ...

  9. Javascript之计时

    // <!DOCTYPE html> <meta http-equiv="Content-Type" content="text/html; chars ...

  10. Android下使用InputStream读取文件

    在Android下使用InputStream读取文件. 如果不是从头开始读取文件,使用skip 后 在读取文件 使用read读取的长度为-1会获取不到数据. 换成RandomAccessFile 使用 ...