ListView组件用于以列表的形式显示数据,ListView组件采用MVC模式将前端显示与后端数据进行分离,也就是说,ListView组件在装载数据时并不是直接使用ListView类的add或类似的方法添加数据,而是需要指定一个adapter对象。该对象相当于MVC中的C(控制器,Controller),ListView相当于MVC模式中的V(试图,View),用于显示数据。为ListView提供数据的List或数据相当于MVC模式中的M(模型,model);在ListView中组件中通过控制器(adapter对象)获得需要显示的数据,在创建adapter对象时需要指定要显示的数据(List或数组对象),因此,要显示的数据与ListView之间通过adapter对象进行连接,同时又互相独立,也就是说,ListView只知道显示数据来自adapter,并不知道这些数据是来自list还是数组,对于数据来说,只知道将这些数据添加到adapter对象中,并不知道这些数据会被用于ListView组件或其他组件。
********************************在main.xml文件中
<?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="vertical"
android:background="@drawable/mainbg"
>
<ListView
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:listSelector="@drawable/bg"
android:layout_marginLeft="40dp"
android:layout_marginTop="90dp"
>
</ListView>
</LinearLayout>
*****************************main _item中
<?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="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/picture"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="65dp"
/>
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="30dp"
/>
</LinearLayout>
************************************在java代码中*******************************************
package com.bawei.layout;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class LayoutActivity extends Activity {
private ListView mlistview;
private SimpleAdapter sa;
private ArrayList<HashMap<String,Object>> al;
//获得drawable里的图片,用int型数组
private int[] picture = new int[] {R.drawable.player,R.drawable.media,R.drawable.video, R.drawable.net,R.drawable.app,R.drawable.settings
};
//文字展示,用string型数组
private String[] text= new String[]{"网络播放","多媒体中心","互联网视屏","网上冲浪","应用程序","系统设置"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mlistview = (ListView) findViewById(R.id.listview);
al = new ArrayList<HashMap<String,Object>>();
HashMap<String, Object> hm;
int length = picture.length;
//for循环,用下标将图片和文字添加到集合里
for(int i= 0;i<length;i++){
hm = new HashMap<String,Object>();
hm.put("picture", picture[i]);
hm.put("text", text[i]);
al.add(hm);
}
//添加到适配器里
sa=new SimpleAdapter(this, al, R.layout.main_listview, new String[]{"picture","text"}, new int[]{R.id.picture,R.id.text});
mlistview.setAdapter(sa);
mlistview.setDividerHeight(0);//listview分割线消失
}
}
大概的流程就是这样子哦~~~~~~~~~~~~~~~~~~~~~
分享到:
相关推荐
6. **自定义刷新动画和样式**:RTPullListView可能提供了接口来定制刷新时显示的动画和文字,可以根据需求进行个性化设置。 7. **处理下拉状态**:为了提供良好的用户体验,需要处理各种下拉状态,如是否可以继续...
1. **自定义View**: 需要创建一个新的布局文件,包含一个可动画化的指示器(如旋转的菊花或箭头)和提示文字,以显示刷新状态。 2. **监听手势**:通过监听用户的滑动手势,当达到一定阈值时触发刷新动作。这可以...
这两个列可能包含不同类型的数据显示,比如图片和文字,或者两个不同的数据字段。在Adapter中,开发者需要重写`getView()`方法,根据数据源返回对应的视图对象。 在适配器中,数据通常存储在ArrayList或其他集合类...
然而,实际开发中我们可能需要不同的Item展示不同类型的数据,比如头像+名字的组合和只显示文字的Item。这时,我们就需要用到“convertView”的复用机制以及自定义Adapter。 1. 多种Item布局的实现: - 创建多个...
分析这个示例代码,我们可以深入理解滚动气泡提示的具体实现细节,包括如何结合Adapter和ListView的滚动事件来控制气泡的显示与隐藏,以及如何处理气泡的动画效果。 总之,滚动气泡提示是一种增强用户交互体验的...
在这个项目中,ListView将被用来显示每个下载任务的状态,包括任务名称、下载进度和操作按钮。 2. **Adapter**:Adapter是连接数据源与ListView的关键,它负责将数据转换为ListView可以显示的视图。在这里,你需要...
本教程将深入探讨ListView的使用,并通过两个实际的例子——一个简单的列表演示和一个聊天对话列表——来帮助你更好地理解和应用这个组件。 首先,我们来看`ListView`的基本结构。ListView由多个列表项(ListView ...
在iOS中,下拉刷新通常称为"Pull to Refresh",当用户在ListView(在iOS中是UITableView)顶端向下拉动时,会显示一个可滑动的头部视图,通常带有动画效果和文字提示,告知用户松开手指即可加载新数据。Android上也...
1. **ListView**: ListView是Android SDK中的一个视图组件,它能动态加载和显示大量的数据行。通过适配器(Adapter)机制,ListView可以从数据源获取数据并将其转化为可视化的列表项。在本示例中,ListView被用来...
在Android开发中,ListView是一种常用的控件,用于展示大量数据列表。然而,为了提供更好的用户体验,用户往往期望在...通过学习和理解这个项目,你可以更好地掌握Android UI交互设计以及事件处理,提升你的开发技能。
本文将深入探讨如何在Android中实现ListView的选中效果,并通过具体的实践案例——MyApplication来讲解。 首先,我们需要理解ListView的工作原理。ListView通过Adapter来绑定数据,它会根据屏幕空间动态加载和回收...
在Android开发中,ListView是常用的一种视图组件,它用于展示大量的列表数据,通常用于创建具有滚动功能的应用界面。...对于初学者来说,这是一个很好的练习项目,可以提升对Android手势处理和UI设计的理解。
然而,当ListView内的元素包含EditText时,开发者可能会遇到一个常见的问题——EditText错位。这个问题通常出现在用户滚动ListView时,EditText的位置与其实际应该显示的位置不一致,导致用户体验下降。本篇文章将...
本文将深入探讨如何在ListView中实现这种带阻尼效果的下拉刷新和上拉加载功能。 首先,我们需要了解"阻尼效果"。阻尼是指在物理系统中,一个物体在运动时受到的阻力,使得其速度逐渐减小直至停止。在UI设计中,阻尼...
总结来说,本次实习包含了对复杂ListView控件的理解和应用,包括简单ListView和复杂ListView的实现方式、ChatStyleListView的界面设计,以及网络请求和Json数据处理的知识。通过这三个部分的学习,实习生将能够掌握...
本篇文章将深入探讨ListView中的两个关键方法——`getItemViewType`和`getViewTypeCount`,它们对于优化ListView的性能和提升用户体验起着至关重要的作用。 `getItemViewType(int position)`方法是ListView的...
在提供的压缩包文件中,有两个示例项目——ListViewButtonDemo和ListViewImageButton,它们可能是演示如何在ListView中添加按钮或者其他交互元素的。在这些示例中,你可能会看到如何在ListView Item中集成按钮,处理...
它允许用户通过左右滑动来浏览多个项目,每个项目可以是图片、文字或其他视图。 2. **Adapter机制**:Gallery的运作离不开Adapter,它是连接数据源和UI组件的桥梁。在GalleryDemo中,开发者需要实现一个自定义的...
此外,为了实现用户友好的界面,我们还需要使用Android的布局文件和视图组件,如EditText用于输入文字,Button用于提交操作,ListView或RecyclerView显示日记列表。同时,我们需要掌握Activity和Fragment的生命周期...
而在getChildView()中,我们要处理子项的视图,可能包括文字、图片或其他复杂的布局。这两个方法都需要考虑视图的复用,通常会通过ViewHolder模式来提高性能。 此外,为了实现列表的展开和折叠,我们需要关注...