使用自定的Adapter绑定ListView/GridView数据
使用自定的Adapter绑定ListView/GridView数据(地址)
对于ListView/Gridview的数据绑定, google提供了一些Adapter的模板, 自己也可以自定义一些个性化的显示样式,这样自定义一个Adapter并不复杂,本文自定义了一个显示两行Text的Adapter,使用这个Adapter为ListView绑定数据。
首先,创建一个有两个TextView组成的Layout - TwoRowLayout.axml,这个文件就相当于ListView中一个项目模板。 源代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:text="Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dip"
android:id="@+id/Text1" />
<TextView
android:text="Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14dip"
android:id="@+id/Text2" />
</LinearLayout>
其次, 要定义个性化类TwoRowItem, ListView绑定的数据将会是一个List<TwoRowItem>。
public class TwoRowItem
{
public string Row1 { get; set; }
public string Row2 { get; set; }
}
创建一个TwoRowListAdapter,该类继承BaseAdapter<TwoRowItem>。并实现该基类的一些方法。
public class TwoRowListAdapter:BaseAdapter<TwoRowItem>
{
List<TwoRowItem> items;
Activity context;
public TwoRowListAdapter(Activity context, List<TwoRowItem> items)
{
this.items = items;
this.context = context;
}
public override long GetItemId(int position)
{
return position;
}
public override TwoRowItem this[int position]
{
get
{
return items[position];
}
}
public override int Count
{
get
{
return items.Count;
}
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = items[position];
View view = convertView;
if (view == null)
view = context.LayoutInflater.Inflate(Resource.Layout.TwoRowLayout, null);
view.FindViewById<TextView>(Resource.Id.Text1).Text = item.Row1;
view.FindViewById<TextView>(Resource.Id.Text2).Text = item.Row2;
return view;
}
}
然后, 就可以使用自定义的TwoRowListAdapter为ListView或GridView绑定数据了。在Second.axml中加入新控件ListView - listView1, 然后在SecondActivity.cs中为其绑定数据。
ListView myList = FindViewById<ListView>(Resource.Id.listView1);
List<TwoRowItem> items = new List<TwoRowItem>();
items.Add(new TwoRowItem
{
Row1 = "Hello Android!",
Row2 = "Using java"
});
items.Add(new TwoRowItem
{
Row1 = "Hello Android again!",
Row2 = "Using C#"
});
TwoRowListAdapter adapter = new TwoRowListAdapter(this, items);
myList.SetAdapter(adapter);
myList.ItemClick += (sender, e) =>
{
TwoRowItem clickedItem = items[e.Position];
string method = clickedItem.Row2;
};

使用自定的Adapter绑定ListView/GridView数据的更多相关文章
- ScrollView嵌套ListView,GridView数据加载不全问题的解决
我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...
- Android之ListView/GridView 优化
一.效率最低的getView实现 我们知道,ListView和GridView的显示都是通过Adapter的getView实现的. ListView/GridView数据量较小时,我们的处理方式一般是 ...
- Android 快速开发系列 打造万能的ListView GridView 适配器
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805 ,本文出自[张鸿洋的博客] 1.概述 相信做Android开发的写 ...
- 浅谈RecyclerView(完美替代ListView,GridView)
Android RecyclerView 是Android5.0推出来的,导入support-v7包即可使用. 个人体验来说,RecyclerView绝对是一款功能强大的控件. 首先总结下Recycl ...
- 与众不同 windows phone (52) - 8.1 新增控件: AutoSuggestBox, ListView, GridView, SemanticZoom
[源码下载] 与众不同 windows phone (52) - 8.1 新增控件: AutoSuggestBox, ListView, GridView, SemanticZoom 作者:webab ...
- 背水一战 Windows 10 (58) - 控件(集合类): ListViewBase - ListView, GridView
[源码下载] 背水一战 Windows 10 (58) - 控件(集合类): ListViewBase - ListView, GridView 作者:webabcd 介绍背水一战 Windows 1 ...
- ScrollView listView gridView 之间的冲突问题
在ScrollView中的listView gridView添加适配器之后添加//设置gridView整体的高度 public void setListViewHeightBasedOnChildre ...
- 【转】Android自定义Adapter的ListView的思路及代码
原文网址:http://www.jb51.net/article/37236.htm Android自定义Adapter的ListView的思路及代码,需要的朋友可以参考一下 在开发中,我们经常使 ...
- universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法
在listview/gridview中使用UIL来display每个item的图片,当图片数量较多需要滑动滚动时会出现卡顿,而且加载过的图片再次上翻后依然会重复加载(显示设置好的加载中图片) 最近在使 ...
随机推荐
- Galera集群server.cnf参数调整--前言
文档安排: 前言部分会简述下galera集群,正文中会针对我们线上的环境,在不断业务的情况下,进行参数调整的话,有些参数不能够进行配置,会以#***的形式写入配置文件中,文档也会进行进一步说明. 如果 ...
- spring与mybatis三种整合方法
spring与mybatis三种整合方法 本文主要介绍Spring与Mybatis三种常用整合方法,需要的整合架包是mybatis-spring.jar,可通过链接 http://code.googl ...
- CheckedListBoxControl 实现复选框的单选与多选功能
由于工作需要,需要实现复选框的单选与多选功能,找了好多资料都不是很全,经过两天苦苦的挖挖挖,终于完成啦O(∩_∩)O哈哈~ 用DEV控件中的CheckedListBoxControl控件,当然VS中的 ...
- Install Sublime Text 3
$ sudo add-apt-repository ppa:webupd8team/sublime-text-3 $ sudo apt-get update $ sudo apt-get instal ...
- cc1101 ASK发射模式
cc1101 配置 433.919830Mhz 1.19948kBaud 199.951172 58.035714 #ifndef _CC1100_H_#define _CC1100_H_ ...
- 使用Runtime.getRuntime().exec()在java中调用python脚本
举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...
- Android中的自定义视图控件
简介 当现有控件不能满足需求时,就需要自定义控件. 自定义控件属性 自定义控件首先要继承自View,重写两个构造函数. 第一个是代码中使用的: public MyRect(Context contex ...
- ppp数据帧的格式
参考http://blog.chinaunix.net/uid-11639156-id-2379044.html
- Visual Studio 2015 Update 3 ISO
http://download.microsoft.com/download/c/2/6/c26892d8-6a5d-4871-9d46-629f4d430146/vs2015.3.vsu.iso
- java数据结构_笔记(5)_图的算法
图的算法 1 图的遍历图的遍历就是从图中某个顶点出发,按某种方法对图中所有顶点访问且仅访问一次.遍历算法是求解图的连通性问题.拓扑排序和求关键路径等算法的基础. 2 深度优先遍历从图中某个顶点V 出发 ...