Android的BaseAdapter等效于Windows应用商店应用

时间:2014-03-10 16:49:24

标签: c# android windows listview equivalent

我有一大堆Integer项目,我希望在ListView中显示格式。通常在Android上我会扩展BaseAdapter(这是动态视图/控件创建的一个例子):

public View getView(int position, View convertView, ViewGroup parent) {
    if(convertView!=null){
        //inflate convertView if it doesn't exist 
    }
    MyView v = (MyView)convertView;
    v.setId(position);
    v.setNumber(myIntegerArray[position]);
    return v;
}

我想知道如何在C#中为我的Windows应用商店应用做到这一点。我找不到关于这个主题的任何有意义的信息。

我不想每次都创建List(或其他ItemsSource对象),因为它会占用太多内存而且速度很慢(我必须刷新数组值)。

1 个答案:

答案 0 :(得分:1)

基于XAML的UI技术具有一种称为UI Virtualization的功能,可以在处理基于项目的UI(ItemsControls)中显示的大量数据时减少内存消耗和处理时间。

为了实现这一点,在基础数据集中添加/删除/更改项目的同时保持更新UI的能力,您需要将DataBind UI设置为ObservableCollection<T>:< / p>

<ListBox ItemsSource="{Binding}"/>
代码背后的代码:

var numbers = Enumerable.Range(0,100);
DataContext = new ObservableCollection<int>(numbers);

请记住,基于XAML的UI技术中基于DataBinding的声明性方法与其他框架中的过程方法完全不同。在XAML中,从不需要在过程代码中创建UI元素,您在XAML中定义它们然后将UI绑定到相关的数据项集合和UI框架照顾其他人。