Windows Phone 7 可以把它看成是Android 的 ListView ,WP7 只是预先在XAML里面为它的数据模板规定了格式,而Android 可以通过后期引入数据的方式为其添加数据模板。

  Android 我们可以通过以下几种方式为LISTVIEW 添加数据,用法极其简单:

  • 继承ListActivity,使用SetListAdapter,参考下面的代码。

    setListAdapter(new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1, mStrings));
  • 可自定义数据源,继承BaseAdapter ,参考下面代码。
    自定义数据源

     private class SlowAdapter extends BaseAdapter {
            private LayoutInflater mInflater;
            
            public SlowAdapter(Context context) {
                mContext = context;
                mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            }

    /**
             * The number of items in the list is determined by the number of speeches
             * in our array.
             * 
             * @see android.widget.ListAdapter#getCount()
             */
            public int getCount() {
                return mStrings.length;
            }

    /**
             * Since the data comes from an array, just returning the index is
             * sufficent to get at the data. If we were using a more complex data
             * structure, we would return whatever object represents one row in the
             * list.
             * 
             * @see android.widget.ListAdapter#getItem(int)
             */
            public Object getItem(int position) {
                return position;
            }

    /**
             * Use the array index as a unique id.
             * 
             * @see android.widget.ListAdapter#getItemId(int)
             */
            public long getItemId(int position) {
                return position;
            }

    /**
             * Make a view to hold each row.
             * 
             * @see android.widget.ListAdapter#getView(int, android.view.View,
             *      android.view.ViewGroup)
             */
            public View getView(int position, View convertView, ViewGroup parent) {
                TextView text;
                
                if (convertView == null) {
                    text = (TextView)mInflater.inflate(android.R.layout.simple_list_item_1, parent, false);
                } else {
                    text = (TextView)convertView;
                }

    if (!mBusy) {
                    text.setText(mStrings[position]);
                    // Null tag means the view has the correct data
                    text.setTag(null);
                } else {
                    text.setText("Loading...");
                    // Non-null tag means the view still needs to load it's data
                    text.setTag(this);
                }

    return text;
            }

    /**
             * Remember our context so we can use it when constructing views.
             */
            private Context mContext;
        }

  • 由于Android 默认提供了多种自定义数据源的格式模板给我们,所以用起来非常方便有多种可供选择:
    SimpleAdapter,SimpleCursorAdapter,ArrayAdapter<?>等,具体可在具体的项目上实施使用。

  本篇将着重介绍WP7 的ListBox 一个我自认为非常简单方便的数据绑定方法。并且通过Silverlight 特有的数据绑定方法在XAML绑定数据。本篇学习笔记将以一个呈现天气列表的LISTBOX的例,效果如下:

实现这个功能我们需要编写一个Model 己记录这些实体信息,Model代码如下:

public class weather
    {
        public string Conditions { get; set; }
        public string ImageUrl { get; set; }
        public string Low { get; set; }
        public string High { get; set; }
        public string Location { get; set; }

public weather(string conditins, string imageurl, string low, string high, string location)
        {
            this.Conditions = conditins;
            this.ImageUrl = imageurl;
            this.Low = low;
            this.High = high;
            this.Location = location;
        }

}

并且我们还需要一个类来做为ListBox 的数据源,前篇有讲过数据绑定的一篇文章提到过ObservableCollection 不知道大家还有没有印象,本篇就是使用这个数据集合来做ListBox 数据源,该类代码如下:

 public class weathers:List<weather>
    {
        private const string imageUrl = "../images/";

public weathers()
        {
            BuildCollection();
        }

public ObservableCollection<weather> DataCollection { get; set; }

public ObservableCollection<weather> BuildCollection()
        {
            DataCollection = new ObservableCollection<weather>();
            DataCollection.Add(new weather("阴天", imageUrl + "19n.png", "10度", "20度", "广州"));
            DataCollection.Add(new weather("凉爽", imageUrl + "23d.png", "20度", "25度", "海南"));
            DataCollection.Add(new weather("多云", imageUrl + "26n.png", "10度", "18度", "深圳"));
            DataCollection.Add(new weather("晴转多云", imageUrl + "27d.png", "20度", "23度", "三亚"));
            DataCollection.Add(new weather("阴转多云", imageUrl + "27n.png", "22度", "23度", "揭阳"));
            DataCollection.Add(new weather("晴天", imageUrl + "31d.png", "22度", "25度", "汕头"));
            return DataCollection;
        }

}

实体类和数据源代码编写完成后,接下来打开mainPage.xaml,添加一个命名空间:

  xmlns:data="clr-namespace:ListBoxDatBind"

Tip:这里指定的是你的数据源所在的命名空间。

之后,添加一个页面的资源KEY

<phone:PhoneApplicationPage.Resources>
        <data:weathers x:Key="weatherCollection"/>
    </phone:PhoneApplicationPage.Resources>

准备工作准备完成,为ListBox 绑定数据:

 <ListBox     Name="listBox1" 
                       ItemsSource="{Binding Source={StaticResource weatherCollection},Path=DataCollection}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <Image  Source="{Binding Path=ImageUrl}"/>
                            <StackPanel Orientation="Vertical">
                                <TextBlock  Text="{Binding Conditions}"/>
                                <TextBlock  Text="{Binding Low}"/>
                                <TextBlock  Text="{Binding High}"/>
                                <TextBlock  Text="{Binding Location}"/>
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

运行的效果如上图。

个人觉得,要论数据绑定的话,还是Android 的 ListView 来得灵活一点,不过Wp 7 的数据绑定却在微软的封装下来得方便许多。

源码下载:

数据绑定

转载于:https://www.cnblogs.com/TerryBlog/archive/2011/01/13/1934876.html

Windows Phone 7 不温不火学习之《ListBox 数据与Android ListView 数据绑定》相关推荐

  1. Windows Phone 7 不温不火学习之《创建用户控件》

    同样出自微软的产品,像ASP.NET 一样,Windows Phone 7 也有一个叫UserControl 的东西.这个相当于一个组件,类似于Android 继承View . 本篇将实现一个用户控件 ...

  2. Windows Phone 7 不温不火学习之《画图》

    在Android 我们需要在屏幕画图,或扩展SurfaceView 或扩展父类View 在OnDraw()里面使用画板和调色笔画画.而在微软的强大封装下,这种画图的试成为了控件的可能,微软将众多日常必 ...

  3. Windows Phone 7 不温不火学习之《项目模板》

    利用闲暇时间看了一下Windows Phone 7的相关资料,觉得这个手机系统挺新颖,打算这段时间学习一下. 打开Microsoft Visual Studio 2010 Express for Wi ...

  4. Windows Phone 7 不温不火学习之《推送通知服务》

    Windows Phone 中的 Microsoft Push Notification Service 向第三方开发人员提供了一个弹性,专注,而且持续的渠道,使得开发人员可以从Web Service ...

  5. Windows Phone 7 不温不火学习之《Expression Blend 创建渐变效果和创建Storyboard动画》...

    说起Expression Blend ,开发过Silverlight 或者WPF的同学肯定会暗爽一把.微软把这一神器免费提供给我们开发者使用,特别是自从WP7 发布就立刻免费,可以看出微软对WP7的重 ...

  6. 学习笔记---母板页、用户控件、第三方控件及视图状态管理

    一.母版页 在制作页面的过程中, 多个页面往往具有相同的页面Header和页面Footer, 多个页面只是在中间部分有变化. 那么我们完全可以避免在每个页面中都写一遍页头和页尾的代码, 这种技术就是母 ...

  7. ESP32 开发笔记(四)LVGL控件学习 ColorPicker 颜色选择器控件

    先看效果,创建一个颜色选择器控件,设置事件回调动态显示当前选择的颜色值 开发板购买链接https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.5 ...

  8. vs2010 学习Silverlight学习笔记(7):控件样式与模板

    概要: 终于知道Silverlight--App.xaml是干什么用的了,不仅可以用来封装样式(类似css),还可以制定控件模版...好强大的功能啊. 封装: 继续学习<一步一步学Silverl ...

  9. Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)

    原文:Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定) ------------------------------ ...

最新文章

  1. python查看和更改当前工作目录
  2. Mysql 内部结构 / Replication | 层次结构
  3. android 服务的应用,在Activity中实现背景音乐播放
  4. ICLR 2020 | “同步平均教学”框架为无监督学习提供更鲁棒的伪标签
  5. mac删除ssh key_SecureCRT for mac(好用的终端SSH仿真工具)
  6. 方立勋_30天掌握JavaWeb_XML
  7. 同步异步单线程多线程初级理解
  8. Android学习总结00之废话
  9. 图片格式转换 - .webp 转格式为 .png / .jpg
  10. py程序员写代码的习惯养成 防止想到什么写什么
  11. 中国移动高同庆:积极推动6G形成全球统一标准体系,避免产业割裂
  12. python编程基础—正则表达式
  13. div添加一个点击事件(绑定点击事件)
  14. 机器学习-西瓜书、南瓜书第三章
  15. 超详细的AI深度学习“花书”笔记(附中英文电子书资料)
  16. 手机android怎么结束后台,如何关闭手机后台运行程序
  17. 4.OpenCV视频处理
  18. linux给目录分配空间,Linux 分配/home的磁盘空间给根目录
  19. Android百度地图
  20. matlab 拟合光滑曲线图,Matlab光滑曲线多项式拟合与样条曲线拟合的两个案例

热门文章

  1. 编译DirectShow Samples
  2. lol服务器维护9月30,英雄联盟4月30日更新维护几点结束_4月30日LOL10.9版本停机维护结束时间_3DM网游...
  3. sql基础教程mysql_SQL基础教程(第2版)笔记整理
  4. leetcode算法题--最长等差数列★
  5. java怎么遍历优先级队列_打印优先级队列的内容[java]
  6. 动态设置 GridView Web 服务器控件列宽
  7. QT-X11-3.1.2.tar.bz2的使用
  8. Codeforces 706D Vasiliy's Multiset
  9. sonar做代码检测时如何忽略一些代码文件
  10. js jquery 数组的合并 对象的合并