xamarin android——数据绑定到控件(二)
本示例为通过媒体内容提供器获取本机中的图片显示在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——数据绑定到控件(二)的更多相关文章
- xamarin android——数据绑定到控件(四)
本文为通过自定义列表适配器定义ListView,以上文为基础,基于ListActivity. 定义列表项布局,包含一个图片显示,标题和描述 <LinearLayout xmlns:android ...
- xamarin android——数据绑定到控件(三)
如果当前活动中,只存在一个listview视图,可以借助ListActivity快速的实现一个列表,即当前Activity继承ListActivity.在OnCreate方法中简单的两行代码,就可以创 ...
- xamarin android——数据绑定到控件(一)
mono for android 中光标由ICursor 接口标识,该接口公开了操作结果数据集的所有方法.光标的使用非常消耗系统资源,所以不使用时应该光比光标.可以通过StartManagingCur ...
- 安卓控件 仪表盘控件 柱状图控件 曲线控件 xamarin.android 分类器 瓶子控件 报警控件 水箱控件 进度条控件等
本篇博客主要介绍一个控件库,HslControls.dll 的界面,这个控件库支持winform,winform的参考另一篇文章:https://www.cnblogs.com/dathlin/p/1 ...
- Xamarin.android 重写axml控件
https://www.cnblogs.com/lonelyxmas/p/5632694.html <Laco: 用来用引指定的控件 android:layout_widt ...
- Xamarin.Android DatePickerFragment 日期控件
MainActivity 代码: public class MainActivity : Activity { TextView _dateDisplay; Button _dateSelectBut ...
- xamarin.android 给View控件 添加数字提醒效果-BadgeView
本文代码从java项目移植到.net项目 java开源项目:https://github.com/jgilfelt/android-viewbadger using System; using S ...
- [置顶] Android常用适配器控件
Android常用适配器控件 列表控件用于显示数据集合,Android不是使用一种类型的控件管理显示和数据,而是将这两项功能分布用列表控件和适配器来实现.列表控件扩展了android.widget.A ...
- Android 中常见控件的介绍和使用
1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...
随机推荐
- [安卓学习]AndroidManifest.xml文件内容详解
一,重要性 AndroidManifest.xml是Android应用程序中最重要的文件之一.它是Android程序的全局配置文件,是每个 android程序中必须的文件.它位于我们开发的应用程序的根 ...
- C语言经典算法100例(二)
11.判断某一年是否是闰年. //判断某一年份是否是闰年 int IsLeapYear(int year) { return (year % 400 == 0 || (year % 4 == 0) & ...
- Plus One @LeetCode
import java.util.Arrays; /** * Plus One * * Given a number represented as an array of digits, plus o ...
- iOS开发——图形编程OC篇&OpenGL ES2.0编程步骤
OpenGL ES2.0编程步骤 OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机.PDA和游戏主机等嵌入式设备而设 ...
- yii泛域名
return CMap::mergeArray( require (dirname(__FILE__) . '/main.php'), array( 'components' => array( ...
- C#多线程学习(一) 多线程的相关概念
什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源.而一个进程又是由多个线程所组成的. 什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄 ...
- BootStrap2学习日记6---代码
<:表示“<” >:表示“>” 在BootStrap中标记代码的标签使用<code>,标记代码块使用<pre>(里面的代码特殊标签必须转义) ...
- PHP代码加密 -- php_strip_whitespace函数,去掉源代码所有注释和空格并显示在一行
<?php function stripCommentAndWhitespace($path = '') { if (empty($path)) { echo '请指定要操作的文件路径'; re ...
- 关于启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!
- [未完成]plugin.xml文件
此文章部分转自:http://fxzcollege6.iteye.com/blog/2013055 关于plugin.xml文件我还总结过一篇文章:http://www.cnblogs.com/Dre ...