`
gnibrE
  • 浏览: 138062 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

list_item 们

阅读更多
系统的listview的layout在frameworks/base/core/res/res下面

1 simple_list_item_1.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:paddingLeft="6dip"
    android:minHeight="?android:attr/listPreferredItemHeight"
/>


的确够simple吧。。

2 simple_list_item_2.xml
<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android" 
	android:paddingTop="2dip"
	android:paddingBottom="2dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:mode="twoLine"
>
    
	<TextView android:id="@android:id/text1"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
        android:layout_marginLeft="6dip"
        android:layout_marginTop="6dip"
		android:textAppearance="?android:attr/textAppearanceLarge"
	/>
		
	<TextView android:id="@android:id/text2"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:layout_below="@android:id/text1"
        android:layout_alignLeft="@android:id/text1"
		android:textAppearance="?android:attr/textAppearanceSmall"
	/>

</TwoLineListItem>

列表每项都有两行内容的listview

3. simple_list_item_checked.xml
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/textCheckMark"
    android:paddingLeft="6dip"
    android:paddingRight="6dip"
/>


4. simple_list_item_single_choice.xml
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/listChoiceIndicatorSingle"
    android:paddingLeft="6dip"
    android:paddingRight="6dip"
/>



5.
simple_list_item_multiple_choice.xml
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    android:paddingLeft="6dip"
    android:paddingRight="6dip"
/>



这些代码很简单,功能却很强大。
甚至可以在里面添加饰品音频等。。求相关资料。


这里转一些其他看见的资料。
-------------------
http://dev.10086.cn/cmdn/bbs/viewthread.php?tid=17908
Android之ListActivity(一):布局与数据绑定
Android中的列表,当然也可以用ListView来完成所需要的功能,用法是一样的。
废话不说,来关键的。
LiveActivity本身继承了关于List操作的众多接口,我们可以方便的重写这些操作中需要的方法来实现自己需要的功能。
如果要用ListActivity,则 Activity的Layout文件中必须包括一个(只能一个)ListView,且ListView的id= "@id/android:list"。
如下代码,一个标准的ListActivity Layout文件:
<?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"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<ListView android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00FF00"
android:layout_weight="1"
android:drawSelectorOnTop="false"/>
<TextView id="@id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FF0000"
android:text="No data"/>
</LinearLayout>
请注意 ListView与TextView的id。前面说了,ListView的Id为固定不变的,为”@./idandroid:ost”,ListActivity会根据id自动查找ListView引用;但如果当ListView中没有值而又想提示一句话时,那么用于指定显示提示信息的TextView的id 必须为”"@id/android:empty",提示的信息可以通过android:text进行指定。

OK,关于如何布局说完了,那么如何给List绑定值,并进行操作呢?
首先我们需要确实的是,ListView的布局也完成了,并通过调用setContentView(…)进行了绑定,但直到现在我们还没有确定ListView中的第一行显示的格式是什么,是直接显示文字还是要“图文并茂”的显示。
Android系统为我们提供了多种模板进行选择(android.R.layout),如
Ø Simple_list_item_1 每项有一个TextView
Ø Simple_list_item_2 每项有两个TextView
Ø Simple_list_item_checked 带CheckView的项
Ø Simple_list_item_multiple_choise 每项有一个TextView并可以多选
Ø Simple_list_item_single_choice 每项有一个TextView,但只能进行单选。


但然,如果以上项模板还无法满足你的要求,那只能自定义模板了(相当简单,就是定义一个layout布局)。如果你做的asp.net的开发的话,是否对dataList控件有印象呢。如果对DataList有印象,那么理解ListView也就相当的简单了。
自定义模板可以根据自己的需要定义成任意的格式,包括图片、方案及其他可显示的View,不用多说,自己定义就好了,关键是如果使用并进行模板的绑定。
如何要对ListView进行数据绑定,必须使用到一个接口:Adapter。
其中最经常与ListView进行配合使用的有ArrayAdapter、 CursorAdapter及SimpleAdapter等。
从名称可以看出ArrayAdapter使用的是一个ArrayAdapter做为数据源,SimpleCursorAdapter使用的是一个Cursor使用数据源,都比较容易理解,那么如何使用SimpleAdapter作为数据的适配器呢。Ok,从易到难。
ArrayAdapter:

String[] data = { "Item1", "Item2",
        "Item3", "Item4", "Item5" };
listView.setAdapter(new ArrayAdapter<String>(this,
     android.R.layout.simple_list_item_single_choice, data)); 


SimpleCursorAdapter:
//从数据库中查询Cursor
   cursor = adapter.getAllNotes();
   startManagingCursor(cursor);


   //设置要显示的数据源中的列名(需要包含在cursor中)
   String[] from = new String[] { DiaryDbAdapter.KEY_COLUMN_TITLE,
                DiaryDbAdapter.KEY_COLUMN_CREATEED };


   //显示的View(自定义模板中的View)
   int[] to = new int[] { R.id.txtRowTitle, R.id.txtRowCreateed };
   //绑定
   SimpleCursorAdapter notes = new SimpleCursorAdapter(this,
                R.layout.diaryrow, cursor, from, to);
   setListAdapter(notes);、

SimpleAdapter:
   SimpleAdapter将一个List做为数据源,可以让ListView进行更加个性化的显示。而List中的第一项是个Map<String,?>(用到泛型),其中Map中的每项将与ListView中的每项进行一一对应绑定。Ok,看一下构造:
   SimpleAdapter(Context context,List<? Extends Map<String,?>> data,int resource,String [] form, int [] to);

² Context:当前上下文,一般把Activity.this传递进行。
² Data: 数据源。
² Resource: 自定义的layout模板资源,可以用 R.layout.xxx获取引用。
² Form: 定义ListView中的每一项数据索引,索引来自于Map<String,?>,即指定要显示的内容。
² To:View数组,在ListView模板中的定义View,与Form中需要一一对应。
事例代码:
      List<Hashtable<String, Object>> listContent
= new ArrayList<Hashtable<String, Object>>();



for (int i = 0; i < deviceList.size(); i++) {
         Hashtable<String, Object> table
= new Hashtable<String, Object>();

         table.put("name", deviceList.get(i).Name);
         table.put("address", deviceList.get(i).Address);
         table.put("type", deviceList.get(i).Type + "");  

         listContent.add(table);
      }


adapter = new SimpleAdapter(HeartActivity.this,
listContent, R.layout.child, //自定义的layout


new String[] { "name", "address" },


new int[] {R.id.txtDeviceName, R.id.txtDeviceAddress });


      setListAdapter(adapter);
以上代码使用了Hashtable做为一个Map,并添加到一个List<Hashtable<String, Object>>当中。
之后new一个SimpleAdapter,注意SimpleAdapter是如何生成的。
转自:http://www.cnblogs.com/wservices/archive/2010/06/17/1759793.html




--------------------------
还有个ophone的科普说明。
http://www.ophonesdn.com/article/show/93
分享到:
评论

相关推荐

    Android自定义list的item显示内容

    android:id="@+id/item_image" android:layout_width="80dp" android:layout_height="80dp" android:src="@drawable/ic_image" /&gt; android:layout_width="0dp" android:layout_height="wrap_content" ...

    CSharp_List.zip_C# list_C#中list_C#中list的用法_C#怎么引用List_c# list

    - 删除特定值的元素:`Remove(item)` - 清空整个列表:`Clear()` ```csharp numbers.RemoveAt(0); // 删除索引为0的元素,列表变为{1, 2, 3, 4, 5, 6} numbers.Remove(3); // 删除值为3的元素,列表变为{1, 2, 4, 5...

    wxpython控件之Listctrl

    ### wxPython中的ListCtrl控件详解 #### 一、引言 `ListCtrl`是wxPython库中的一个重要组件,用于创建列表控件。它可以展示多种类型的列表格式,如单列表、报表、带图片的列表等,并且具备强大的自定义功能。本文将...

    item_simple_list_2.xml

    item_simple_list_2.xml

    Android源码:ListView组件应用演示代码

    Android源码:ListView组件应用演示代码,layout的xml文件名需要全部小写。  ActivityList1:   1.初步介绍ListView这个组件。   2.... ...  2.simple_list_item_1和simple_list_item_2的介绍。

    test_list_control.rar_list control_test_ListControl

    3. **LabelItem.cpp**:这可能是一个自定义列表项类的实现,用于扩展 ListControl 的默认行为,例如,可能包含有额外的数据结构或自定义的绘制逻辑。 4. **StdAfx.cpp** 和 **StdAfx.h**:这些文件是 Visual Studio...

    List_Control.rar_LIST_CONTROL_list control_list control控件

    int index = m_listCtrl.InsertItem(0, _T("Item1")); m_listCtrl.SetItemText(index, 1, _T("Item1 Data")); ``` **七、总结** List Control是VC++编程中的强大工具,通过灵活使用其特性,可以构建出功能丰富的...

    mall_item_proto

    "mall_item_proto" 是一个与电子商务平台相关的概念,通常指的是购物中心或在线商店的商品项的原型或数据模型。在IT行业中,特别是在开发电商系统时,这样的数据结构被用来定义商品的基本属性、描述、价格等信息。...

    ListCtrl设置单元格颜色

    `ListCtrl`提供了多种事件处理,比如`EVT_LIST_ITEM_SELECTED`用于处理单元格被选中的事件,`EVT_LIST_ITEM_FOCUSED`处理单元格获得焦点的事件。你可以根据这些事件来动态改变单元格的样式: ```python def on_item...

    list_control.rar_LIST_CONTROL_list control 删除_右键 菜单_右键弹出菜单_弹出菜单

    本篇文章将深入探讨如何在List Control中实现鼠标右键弹出菜单,并演示如何在用户点击菜单项后删除所选择的item。 首先,我们需要了解List Control的基本用法。List Control通常在对话框或视图中使用,可以通过MFC...

    android 仿ipone气泡短信—自定义list

    R.layout.list_say_me_item); list.add(d1); DetailEntity d2 = new DetailEntity("美女", "2010-11-11", "你好!", R.layout.list_say_he_item); list.add(d2); DetailEntity d3 = new DetailEntity...

    mybatis中foreach报错:_frch_item_0 not found的解决方法

    然而,当你遇到“_frch_item_0 not found”这样的错误时,通常是由于在使用`&lt;foreach&gt;`时出现了配置或编码上的问题。下面我们将深入探讨这个问题及其解决方法。 首先,我们要理解这个错误通常表示MyBatis在尝试访问...

    mylistctrl_listctrl_MFClist_

    int nItem = m_listCtrl.InsertItem(LVIF_TEXT, 0, _T("Item1")); m_listCtrl.SetItemText(nItem, 1, _T("Value1")); nItem = m_listCtrl.InsertItem(LVIF_TEXT, 1, _T("Item2")); m_listCtrl.SetItemText(nItem, 1...

    list_change.zip_Change

    - 列表解析:创建新列表并替换原列表,如`my_list = [item*2 for item in my_list]`,列表变为`[0, 10]`。 5. **列表的其他操作**: - `count()`:计算元素在列表中出现的次数,如`my_list.count(0)`返回`1`。 -...

    List-CSharp.zip_C# list 顺序_Linked list_c# list声明_c#list类函数_c#lis

    在C#编程语言中,`List&lt;T&gt;`是一个非常重要的数据结构,它提供了动态数组的功能,允许程序员方便地添加、删除和访问元素。本教程将详细讲解C#中的`List&lt;T&gt;`,包括其声明、基本操作以及与单链表的关联。 1. **C# List...

    list_view打包存储oracle数据库

    1. **数据提取**:从`list_view`获取数据需要遍历组件中的每一项,通常涉及遍历控件的Item集合。在Delphi环境中,可以使用`for`循环,配合`TListView.Items[i]`来访问每个列表项,然后获取每个项的文本或者附加数据...

    new_list_ctrl.rar_DrawItem_DrawItem listctrl_ListCtrl DrawIt_lis

    为了实现更复杂的自定义效果,你可能还需要考虑其他消息的处理,比如`WM_MEASUREITEM`(测量项的大小)和`WM_DELETEITEM`(删除项时的处理)。这些消息的处理与`DrawItem`协同工作,以确保控件的正确显示和操作。 ...

    List_box.zip_box_list_list vb_vb list

    这里的ListBox1是你的ListBox控件的名称,"Item Text"是你想要添加的具体文本。 列表框操作: 1. 多选:如果希望用户可以选择多个项,需要设置ListBox的SelectionMode属性为MultiSimple或MultiExtended。 2. 获取...

    ListView选中item颜色改变

    在这个布局文件中,可以设置一个背景颜色,例如使用`android:background="@drawable/list_item_selector"`,这里`list_item_selector`是一个颜色选择器资源。 2. **创建颜色选择器资源** 在res/drawable目录下创建...

    process_item_process.zip_kill

    "process_item_process.zip_kill"这个主题涉及到两个主要的工具:`tlist`和`kill`,它们都是用于监控和管理进程的实用程序。在这个场景中,`tlist`用于查看系统中运行的所有进程,而`kill`则用于结束指定的进程。 `...

Global site tag (gtag.js) - Google Analytics