`
xuela_net
  • 浏览: 489318 次
文章分类
社区版块
存档分类
最新评论

各种ListView列表方法

 
阅读更多
ListView的一些用法




Adapter用于实现要显示的列表,复杂的可以重写BaseAdapter提供的getView方法,简单的就用SimpleAdapeter(this,要显示的list,布局文件,提取list中Map的Key对应的value,布局中的那些控件作为列表项)
方法一:
让该activityentendsListActivity,并且用SimpleAdapter{

// 生成一个List对象,并按照SimpleAdapter的标准,将bean当中的数据添加到List当中去
List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();

for (Iterator iterator = mp3Infos.iterator(); iterator.hasNext();) {
Mp3Info mp3Info = (Mp3Info) iterator.next();

//利用哈希map存储对应的键值
HashMap<String, String> map = new HashMap<String, String>();
map.put("mp3_name", mp3Info.getMp3Name());
map.put("mp3_size", mp3Info.getMp3Size());

//并将map存入list
list.add(map);
}
// 创建一个SimpleAdapter对象
SimpleAdapter simpleAdapter = new SimpleAdapter(this, list,
R.layout.mp3info_item, new String[] { "mp3_name", "mp3_size" },
new int[] { R.id.mp3_name, R.id.mp3_size });
// 将这个SimpleAdapter对象设置到ListActivity当中,则会显示在控件当中
setListAdapter(simpleAdapter);







可以新建一个xml,用于注册要显示内容的控件,R.id.mp3_name,R.id.mp3_size
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:paddingTop="1dip"
android:paddingBottom="1dip"
>
<TextView android:id="@+id/mp3_name"
android:layout_height="30dip"
android:layout_width="180dip"
android:textSize="10pt"/>
<TextView android:id="@+id/mp3_size"
android:layout_height="30dip"
android:layout_width="180dip"
android:textSize="10pt"/>
</LinearLayout>





方法二:
制作漂亮的ListView

在xml中制作按钮,或者ListItem按下的效果
新建一个listview-selected.xml,在里面填写pressed的时候引用的图片。
在ListView的item项目布局中调用listView-selected
具体提代码:
按钮的状态:
我们一般搞UI设计,按钮通常有三个状态:normal(正常状态);focus(焦点状态),pressed(按下状态)。如下图所示:

915.jpg

我们会在res/drawable目录下定义一个资源文件,比如我们本例中要用到的handle.xml,在里面定义三种状态,每种状态对应一张图片:
代码如下:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:state_window_focused="false" android:drawable="@drawable/handle_normal" />
  4. <item android:state_focused="true" android:drawable="@drawable/handle_focused" />
  5. <item android:state_pressed="true" android:drawable="@drawable/handle_pressed" />
  6. </selector>

复制代码
而我们使用这个资源文件的用法只需要引用drawable里的资源文件(android:background="@drawable/handle")代码如下:

  1. [/backcolor][/color][/align]
  2. [align=left][color=rgb(51,51,51)][backcolor=rgb(255,255,255)]<Button
  3. android:id="@+id/handle"
  4. android:layout_width="wrap_content"
  5. android:layout_height="fill_parent"
  6. android:background="@drawable/handle"
  7. /> [/backcolor][/color][/align]
  8. [align=left][color=rgb(51,51,51)][backcolor=rgb(255,255,255)]
复制代码



Android中的层:
看过《盗梦空间》的人都知道,梦境有多少层,而Android中也有层次之分,在Android中第一层"梦境",我们可以认为是壁纸。第二层就是应用的Activity,第三层就是放在Activity上的容器(ViewGroup以及它的子类FrameLayout,LinearLayout等布局对象),当然容器中还可以放容器,你也可以放到N层(最多放多少我还没验证过),总之最后一层就是那些继承于View的控件了(诸如,Button,TextView等.)

而ListView以及GridView中UI是怎么设计的呢,下面我们看一下效果图:

454.jpg

上图是一个ListView的效果图,正常状态下是白色背景黑色字体,当我们点击一列时会出现黄色背景。这一效果是如何做到的呢?
ListView单元格显示的内容其实是我们事先定义在Layout目录下的一个布局文件,从这个效果来看,我们可以看出它一共有三个“层”
第一层容器(LinearLayout) 背景色为白色:
第二层也是容器(LinearLayout)当按下时,背景色为黄色,把第一层挡住(具体做法可以参照按钮):
第三层是控件(TextView)。
实例
上面说了一些,有些人肯定会云里雾里,所以我们直接来个实例,实例做完后,再看一下,效果会更好,大家按照步骤跟我来:
第一步:首先准备素材,准备三个按钮,以及ListView的背景图(上面三个按钮已经有了,下面我只贴一个ListView背景图片):
16.jpg

第二步:新建一个Android工程,命名为UIDemo.目录结构如下图所示:
734.jpg
第三步:在res目录下新建一个drawable文件夹,定义两个资源文件一个是handle.xml另一个为listview_selected.xml,其中handle.xml代码已经在上面贴出,listview_selected.xml代码如下:


  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector xmlns:android="[url=http://schemas.android.com/apk/res/android]http://schemas.android.com/apk/res/android[/url]">
  3. <item android:state_pressed="true" android:drawable="@drawable/list_selector_background_pressed" />
  4. </selector>
复制代码


第四步:修改main.xml布局文件,这里我用到了SliddingDrawer控件,代码如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="[url=http://schemas.android.com/apk/res/android]http://schemas.android.com/apk/res/android[/url]"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <SlidingDrawer
  8. android:id="@+id/slidingdrawer"
  9. android:layout_width="fill_parent"
  10. android:layout_height="fill_parent"
  11. android:orientation="horizontal"
  12. android:handle="@+id/handle"
  13. android:content="@+id/content">
  14. <Button
  15. android:id="@+id/handle"
  16. android:layout_width="wrap_content"
  17. android:layout_height="fill_parent"
  18. android:background="@drawable/handle"
  19. />
  20. <ListView
  21. android:id="@+id/content"
  22. android:layout_width="fill_parent"
  23. android:layout_height="wrap_content"
  24. />
  25. </SlidingDrawer>
  26. </LinearLayout>
复制代码


我们这里用到了ListView控件,而我们ListView控件显示的内容我事先在layout目录下定义两个TextView,命名为listview_layout.xml,代码如下(这里有三层哦!):

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="[url=http://schemas.android.com/apk/res/android]http://schemas.android.com/apk/res/android[/url]"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:background="#ffffff"
  7. >
  8. <LinearLayout
  9. android:orientation="vertical"
  10. android:layout_width="fill_parent"
  11. android:layout_height="fill_parent"
  12. android:background="@drawable/listview_selected"
  13. android:padding="6px"
  14. >
  15. <TextView
  16. android:id="@+id/bookname"
  17. android:layout_width="fill_parent"
  18. android:layout_height="wrap_content"
  19. android:textSize="20px"
  20. android:textColor="#000000"
  21. />
  22. <TextView
  23. android:id="@+id/author"
  24. android:layout_width="fill_parent"
  25. android:layout_height="wrap_content"
  26. android:textSize="16px"
  27. android:textColor="#000000"
  28. />
  29. </LinearLayout>
  30. </LinearLayout>
复制代码


第五步:修改主核心程序UIDemo.java,代码如下:
  1. package com.tutor.uidemo;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.BaseAdapter;
  8. import android.widget.ListView;
  9. import android.widget.TextView;
  10. public class UIDemo extends Activity {

  11. private ListView mListView;
  12. @Override
  13. public void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.main);

  16. setupViews();
  17. }

  18. private void setupViews(){
  19. mListView = (ListView)findViewById(R.id.content);
  20. mListView.setAdapter(new ListViewAdapter());
  21. }

  22. private class ListViewAdapter extends BaseAdapter{
  23. //这里返回10行,ListView有多少行取决于getCount()方法
  24. public int getCount() {
  25. return 10;
  26. }
  27. public Object getItem(int arg0) {
  28. return null;
  29. }
  30. public long getItemId(int arg0) {
  31. return 0;
  32. }
  33. public View getView(int position, View v, ViewGroup parent) {

  34. final LayoutInflater inflater = LayoutInflater.from(getApplicationContext());

  35. if(v == null){
  36. v = inflater.inflate(R.layout.listview_layout, null);
  37. }
  38. TextView mBookName = (TextView)v.findViewById(R.id.bookname);
  39. TextView mBookAuthor = (TextView)v.findViewById(R.id.author);

  40. mBookName.setText("Android傻瓜教程" + position);
  41. mBookAuthor.setText("Frankiewei" + position);
  42. return v;
  43. }

  44. }
  45. }
复制代码
第六步:运行上述工程,查看效果:
运行效果1:
345.jpg

点击按钮效果2:


436.jpg


ListView正常效果3:

512.jpg

ListView正常效果4:

513.jpg

分享到:
评论

相关推荐

    Android ListView实现图文列表显示

    本文实例为大家分享了Android ListView实现图文列表显示的具体代码,供大家参考,具体内容如下 目标效果:   ListView如果内容过多,可以滑动屏幕来显示,并且点击某一行可使用吐司方法弹出对应的水果名字。 1....

    ListView列表更新数据

    ListView列表数据更新,notifyDataSetChanged()方法 实现代码,简单易懂。是新手学习的好demo

    【Flutter】ListView 列表 ( List 集合的 map 方法说明 垂直列表 水平列表 代码示例 ).zip

    【Flutter】ListView 列表 ( List 集合的 map 方法说明 | 垂直列表 | 水平列表 | 代码示例 ) https://hanshuliang.blog.csdn.net/article/details/119932936 博客源码快照

    支持上下移动数据行的VB ListView列表控件.rar

    一个支持上下移动数据行的VB ListView列表控件,操作方法:在数量和单价栏上单击后内容变为可编辑,要保存这些值只需单击listview的任意地方。要取消更改,只需按下 ESC 键即可恢复原值。 按下上下箭头键即可以在...

    android listview

    android listview的使用方法,创建listview列表,android开发控件的使用方法

    Android ListView列表视图的使用方法

    主要为大家详细介绍了Android ListView列表视图的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    详解Android应用中ListView列表选项栏的编写方法

    主要介绍了Android应用中ListView列表选项栏的编写方法,讲解了使用安卓自带的ListView与自定义multiple ListView的方法,需要的朋友可以参考下

    ListView显示隐藏Item

    ListView显示隐藏Item http://blog.csdn.net/s611533106/article/details/45126755

    Androidlistview侧滑删除第三方库实现方法

    Androidlistview侧滑删除第三方库实现方法

    列表ListView的应用

    本演示中提供了两种创建ListView的方法, (1)通过Xml文件的&lt;ListView&gt;配置 监听:onItemClick (2)让Activity继承自ListViewActivity 监听:nListItemClick

    简单的VB Listview使用演示.rar

    简单的VB Listview列表控件使用方法演示,用Listview显示列表风格的内容十分方便,本示例将演示如何实现这一功能,并且测试程序还附带了一个ListView打印功能,把列表中的内容打印出来,相当实用的ListView应用技巧...

    实现listview监听button

    用于实现在listview中监听button,写的很简单,可以直接拿过来用,一共用了两种方法实现此功能

    Android开发之ListView列表刷新和加载更多实现方法

    主要介绍了Android开发之ListView列表刷新和加载更多实现方法,实例分析了ListView列表操作的相关技巧,需要的朋友可以参考下

    VB ListView 自定义可编辑列

    按下上下箭头键即可以在ListView列表中上下移动数据行。 ' ############################################################################## ' CEditListView.cls ' 功 能:ListView 自定义可编辑列(特别注意:...

    ListView实现分页功能【附Demo源码】

    查阅了很多资料,发现其实ListView自带一个实现分页加载的方法,用到addFooterView/removeView 这两个函数“添加”或“去掉“ListView页脚。下面是一个研究ListView分页时做的一个Demo,比较简单,我把思路我源码和...

    利用JDBC读取mysql数据展示在listview

    这一讲介绍读取file表中pdf文件名称、文件链接和更新日期等内容,并利用listview和SimpleAdapter搭配进行展示。在文件显示界面,点击文件所在行,可以在线阅读pdf文件内容。

    用listview仿QQ好友列表的l面设计实例

    本例提供一种仿QQ好友列表界面的界面设计的方法,使用了listview控件。

    C# WinForm ListView虚拟模式加载数据 提高加载速度

    C# WinForm ListView在虚拟模式下,从缓冲之中获取所需的数据进行加载,性能会有很大提高。步骤:(1)必须设置VirtualMode为true并设置VirtualListSize大小;(2)绑定该事件RetrieveVirtualItem(3)如果中间更新了数据...

    ListView快速索引A-Z

    ListView A~Z快速索引这种效果在通信录和城市列表中经常看到,方便用户查找,是一种增加用户体验的好方法。 使用的知识点: 1,汉字转拼音,使用pinyin4j-2.5.0.jar 2,定义类实现Comparable接口,方便排序 3,...

Global site tag (gtag.js) - Google Analytics