android6---适配器ListView
Android自定义适配器的编写
ListView :在Android应用开发过程中属于最常用的系统组件之一,当然可能同学们问为什么会突然游戏开发中讲这个,呵呵,其实在游戏开发中,也会常常使用到系统组件,比如游戏排行榜,简单的游戏关卡选择等等,都可以来使用ListView来实现;当然关于ListView我想大家都会使用了,那么这篇文章也不是跟大家讲解ListView是如果使用的,而是如何自定义通用适配器类;在ListView三种适配器当中,最受大家青睐的肯定就是SimpleAdapter 适配器,用过的童鞋们都很清楚,它的扩展性很强,可以将ListView中每一项都使用自定义布局,插入N多组件;但是SimpleAdapter也有弱点,那就是当ListView中每一项有Button、CheckBox等这些有事件的组件,我们想监听它们就必须自定义适配器!那么今天的重点也就是来讲解一下如何写一个自定义通用适配器类!SimpleAdapter 构造的时候,我们知道需要五个参数来进行映射数据到ListView中,那么我们今天的自定义通用适配器其实也就是实现系统SimpleAdapter的一个自定义版;OK,可能我说这么多,大家还是不太懂,其实今天要讲述的自定义通用适配器优点有两点:1.使用通用适配器就不需要每次使用自定义适配器的时候,都要去重新去写一个,太累。
2.构造方法与SimpleAdapter构造方法相同,五个参数也一摸一样!3.只需要在自定义的适配器类中,将我们需要监听的组件进行设置监听即可!别的代码不需要去改动!例如我们需要完成下图这种ListView:(图1)首先我们来完成ListView中每项的布局:main.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android "android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="fill_parent"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/iv"/><LinearLayoutandroid:orientation="vertical"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp"android:id="@+id/bigtv"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="10sp"android:id="@+id/smalltv"/></LinearLayout><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="button"android:id="@+id/btn"/><CheckBoxandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/cb"/></LinearLayout>复制代码修改源码:MainActivity.java:public class MainActivity extends Activity {private SimpleAdapter adapter;// 声明适配器对象private ListView listView; // 声明列表视图对象private List<Map<String, Object>> list;// 声明列表容器public static MainActivity ma;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ma = this;// 实例化列表容器list = new ArrayList<Map<String, Object>>();listView = new ListView(this);// 实例化列表视图// 实例一个列表数据容器Map<String, Object> map = new HashMap<String, Object>();// 往列表容器中添加数据map.put("item1_imageivew", R.drawable.icon);map.put("item1_bigtv", "BIGTV");map.put("item1_smalltv", "SMALLTV");// 将列表数据添加到列表容器中list.add(map);// --使用系统适配器,无法实现组件监听;// //实例适配器adapter = new SimpleAdapter(this, list, yout.main, new String[] {"item1_imageivew", "item1_bigtv","item1_smalltv" }, new int[] {R.id.iv, R.id.bigtv, R.id.smalltv });listView.setAdapter(adapter);// //显示列表视图this.setContentView(listView);}}复制代码到此,我们之前要求完成的(图1)要求的ListView,[对ListView不太熟悉的童鞋自行百度google先学习一下基础吧]当然这里我们只是完成了界面,如果想监听(图1)中的按钮和复选框事件,那么我们肯定需要自定义一个适配器,那么下面开始介绍如何实现通用适配器:创建一个新类,类名:“MySimpleAdapter.java”继承BaseAdapter:package com.himi;import java.util.List;import java.util.Map;import android.app.AlertDialog;import android.content.Context;import youtInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.CheckBox;import poundButton;import android.widget.ImageView;import android.widget.TextView;importpoundButton.OnCheckedChangeListener; /*** @author Himi**/public class MySimpleAdapter extends BaseAdapter { private LayoutInflater mInflater;private List<Map<String, Object>> list;private int layoutID;private String flag[];private int ItemIDs[];public MySimpleAdapter(Context context, List<Map<String, Object>> list,int layoutID, String flag[], int ItemIDs[]) { this.mInflater = LayoutInflater.from(context);this.list = list;youtID = layoutID;this.flag = flag;this.ItemIDs = ItemIDs;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn 0;}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {convertView = mInflater.inflate(layoutID, null);convertView = mInflater.inflate(layoutID, null);for (int i = 0; i < flag.length; i++) {//备注1if (convertView.findViewById(ItemIDs[i]) instanceof ImageView) {ImageView iv = (ImageView)convertView.findViewById(ItemIDs[i]);iv.setBackgroundResource((Integer)list.get(position).get(flag[i]));} else if (convertView.findViewById(ItemIDs[i]) instanceof TextView) {TextView tv = (TextView)convertView.findViewById(ItemIDs[i]);tv.setText((String) list.get(position).get(flag[i]));}else{//...备注2}}addListener(convertView);return convertView;}/*** 童鞋们只需要将需要设置监听事件的组件写在下面这方法里就可以啦!* 别的不需要修改!* 备注3*/public void addListener(View convertView) {((Button)convertView.findViewById(R.id.btn)).setOnClickLi stener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new AlertDialog.Builder(MainActivity.ma).setTitle("自定义通用SimpleAdapter").setMessage("按钮成功触发监听事件!").show();}});((CheckBox)convertView.findViewById(R.id.cb)).setOnCheckedChangeListener(newOnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {new AlertDialog.Builder(MainActivity.ma).setTitle("自定义通用SimpleAdapter").setMessage("CheckBox成功触发状态改变监听事件!").show();}});}}复制代码备注1:这个For循环中是对ListView中每一项中包含所有的组件进行判定每个组件的类型,从而去设置其数据!其中《instanceof》这个关键字可能有的童鞋不太熟习,这个是对Object 类型的判断;这里我只是对ImageView、TextView的类型进行的数据识别,为什么我这里只写了这两种,那是因为Button、CheckBox等这些带事件响应的组件是无法通过适配器映射到ListView上的;其实关于适配器映射的机制,这里简单说下:例如一个TextView组件,那么在ListView的每一项(List)中put()添加的时候,put()方法中第一个参数key大家知道是用于与适配器进行对应映射数据用的值,那么第二个参数其实就是put进组件的数据,所以备注1这里,当判定是一个TextView的时候,其实就是对其进行进行setText,而如果是ImageView,其实就是设置其背景图片属性setBackgroundResource!备注2 :我这里最后还有一个else{...}这里是留给童鞋们去扩展的,因为可能还有一些其他能映射的组件,所以这里留下接口,供大家扩展;备注3:addListener(View convertView)这是我留出来的方法,童鞋们只需要将需要设置监听事件的组件写在这方法里就可以啦!那么看一下我们使用通用监听器的效果吧:OK,很正常!那么在来看看使用系统的SimpleAdapter 与我们自定义的MySimpleAdapter代码对比图:怎么样!构造参数完全一样,而且我们这个比它强大,我们只要去设置下需要监听的组件监听代码就OK了。
listview的优化方案
listview的优化方案ListView是Android开发中常用的控件之一,用于展示大量数据的列表。
然而,如果不进行适当的优化,ListView可能会导致界面卡顿,滑动不流畅等问题。
因此,本文将介绍一些ListView的优化方案,帮助开发者提升应用的用户体验。
一、使用ViewHolder优化在ListView的适配器中,使用ViewHolder模式可以大幅度提升性能。
ViewHolder可以缓存每个Item的子View,避免重复的findViewById操作。
通过ViewHolder的使用,可以减少控件查找的次数,提高列表的滚动效率。
二、使用分页加载如果列表中的数据量非常大,一次性加载可能会消耗大量的内存,导致应用崩溃或卡顿。
为了解决这个问题,可以采用分页加载的方式。
将数据分批加载,每次只加载可见范围内的数据,当需要滑动到下一页时再加载下一页的数据。
这样可以降低内存压力,提高加载速度。
三、使用缓存机制ListView会在滚动过程中频繁地调用getView方法,这会导致不断地创建和销毁Item View,影响性能。
为了减少这种开销,可以使用缓存机制。
将已经创建的Item View缓存起来,当需要显示新的Item时,先从缓存中取出已有的Item View进行复用,而不是重新创建新的Item View。
这样可以减少内存的占用和创建View的时间。
四、使用异步加载如果每个Item View中包含大量的图片或其他耗时的操作,会导致列表滑动不流畅。
为了解决这个问题,可以使用异步加载的方式。
在加载图片或执行其他耗时操作时,将其放在子线程中进行,并使用回调函数将结果传递给主线程更新UI。
这样可以保证主线程的响应速度,提升用户体验。
五、减少布局层级布局层级过多也是导致ListView性能下降的一个重要因素。
每个Item View都会经过一系列的布局计算和绘制操作,层级过多会增加这些操作的复杂性。
因此,应尽量减少布局的嵌套层级,简化布局结构,提高渲染速度。
Android ListView优化实践
Android ListView优化实践在看了一些vogella的文章之后,发现关于android listview性能优化这一段很有意思,于是实践了一下,经过优化,性能确实提升不少!先看看优化前和优化后的比较:优化前的log截图:优化后的log截图:并且,在不停滚动ListView的过程中,优化之前会出现ANR现象,在A VD上特别容易复现:然后,优化后显得很流畅,附上对于的log截图:下面附上相关代码分析:ListView中的每一个Item由一个ImageView 和一个TextView组成Layout:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal" ><ImageView android:id="@+id/imageView"android:layout_width="wrap_content"android:layout_height="fill_parent" />"<TextView android:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_marginLeft="15dp"android:gravity="center_vertical" /></LinearLayout>Activity继承自ListActivity,我故意增加了Item,方便测试,效果更明显:public class ListViewDemo extends ListActivity{private final String[] mItems = new String[] { "Android", "iPhone", "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7","Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X","Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu","Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7","Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X","Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu","Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7","Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X","Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu","Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7","Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X","Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu","Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7","Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X","Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu","Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7","Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X","Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu","Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7","Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X","Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2" };@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ListViewArrayAdapter adapter = new ListViewArrayAdapter(this, mItems);getListView().setAdapter(adapter);}}然后custom Adapter,优化之前的adapter:@Overridepublic View getView(int position, View convertView, ViewGroup parent) {long start = System.currentTimeMillis();LayoutInflater inflater = (LayoutInflater) mContext.getLayoutInflater();View rowView = inflater.inflate(mViewResourceId, parent, false);TextView textView = (TextView) rowView.findViewById(mTextViewResourceId);ImageView imageView = (ImageView) rowView.findViewById(mImageViewResourceId);textView.setText(mNames[position]);String s = mNames[position];if (s.startsWith("Windows7") || s.startsWith("iPhone")) { imageView.setImageResource(R.drawable.no);} else {imageView.setImageResource(R.drawable.yes);}Log.v("jerikc","cost time = " + (System.currentTimeMillis() - start));return rowView;}优化之后的Adapter:public class ListViewArrayAdapter extends ArrayAdapter<String>{private final Activity mContext;private final String[] mNames;private final static int mViewResourceId = yout.text_image_row_layout;private final static int mTextViewResourceId = R.id.textView;private final static int mImageViewResourceId = R.id.imageView;static class ViewHolder {public TextView text;public ImageView image;}public ListViewArrayAdapter(Activity context, String[] names) {super(context, mViewResourceId, names);this.mContext = context;this.mNames = names;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {long start = System.currentTimeMillis();View rowView = convertView;if (rowView == null) {LayoutInflater inflater = mContext.getLayoutInflater();rowView = inflater.inflate(mViewResourceId, null);ViewHolder viewHolder = new ViewHolder();viewHolder.text = (TextView) rowView.findViewById(mTextViewResourceId);viewHolder.image = (ImageView) rowView.findViewById(mImageViewResourceId);rowView.setTag(viewHolder);}ViewHolder holder = (ViewHolder) rowView.getTag();String s = mNames[position];holder.text.setText(s);if (s.startsWith("Windows7") || s.startsWith("iPhone")) { holder.image.setImageResource(R.drawable.no);} else {holder.image.setImageResource(R.drawable.yes);}Log.v("jerikc","cost time = " + (System.currentTimeMillis() - start));return rowView;}}优化的大致思想就是:优化之前,每次加载item的时候,都要加载一下布局文件,然后生成一个新的row View对象,然后通过View找到对应的ImageView和TextView,正如我们所知道的那样,加载布局文件时很耗时的,特别是在操作比较频繁情况下,这是不可忍受的,所以会导致ANR现象。
android listview的用法
android listview的用法
Android中的ListView是一种可以显示垂直列表的滚动控件。
它为用户提供了一种可以浏览许多项目,而无需滚动屏幕的便捷方式。
ListView通常用来显示一组有序的数据,这些数据可以是文本,图像,或者其他任意形式的内容。
ListView可以包含任意数量的项目,而不会对屏幕上的性能造成影响。
使用ListView时,必须将它与ArrayAdapter(或其他类型的适配器)结合起来,这样ListView才能正确地显示数据。
ArrayAdapter可以将数据转换为ListView可以显示的格式。
要实现ListView,首先要在布局文件中定义ListView,然后在Activity中初始化ListView,并将ArrayAdapter与ListView绑定。
最后,可以为ListView 注册一个OnItemClickListener监听器,用于处理项目被单击时发生的事件。
Android适配器学习和使用
Android的适配器的学习和使用(整理)在开发中我们需要绑定一些数据展现到桌面上,这是就需要AdapterView。
AdapterView是ViewGroup的子类,它决定了怎么展现视图通过Adapter来绑定特殊的数据类型。
AdapterView是非常有帮助的当你展现数据在你的布局中。
Gallery,ListView和Spinner是AdapterView的子类。
下面看一下AdapterView的结构图:然后再看一下Adapter的结构图:上面已经充分展现了他们的子类和父类的基础关系。
下面我们看一个ListViewDemo的例子:先来看一个简单的adapter的例子:public class SimpleList extends ListActivity {private String[] mListString={"姓名:王魁锋","性别:男","年龄:23", "居住地:上海市普陀区","邮箱:wangkuifeng0118@"};private ListView mListView=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);mListView=this.getListView();setListAdapter(new ArrayAdapter<String>(this,yout.simple_list_item_1,mListString));mListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {// TODO Auto-generated method stubToast.makeText(SimpleList.this, "你选择了:"+mListString[position], 1).show();}});}这里用到了系统定义好的适配模式,当然这只能用来简单的数据适配,下面看一下效果:接下来看一个稍微复杂点的,SimpleAdapter怎么适配:public class IconList extends ListActivity {private String[] mListTitle = { "姓名", "性别", "年龄", "居住地","邮箱"};private String[] mListStr = { "王魁锋", "男", "23", "上海市普陀区","wangkuifeng0118@"};ListView mListView = null;ArrayList<Map<String,Object>> mData= newArrayList<Map<String,Object>>();;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubmListView = getListView();int lengh = mListTitle.length;for(int i =0; i < lengh; i++) {Map<String,Object> item = new HashMap<String,Object>(); item.put("image", R.drawable.portrait);item.put("title", mListTitle[i]);item.put("text", mListStr[i]);mData.add(item);}SimpleAdapter adapter = newSimpleAdapter(this,mData,yout.iconlist,new String[]{"image","title","text"},newint[]{R.id.image,R.id.title,R.id.text});setListAdapter(adapter);mListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stubToast.makeText(IconList.this,"您选择了标题:" + mListTitle[position] + " 内容:"+mListStr[position],Toast.LENGTH_LONG).show();}});super.onCreate(savedInstanceState);}}上面的数据可以是同数据库读取的也可以是从网络获取的,这里不做过多介绍,看下效果:哈哈看起来美观了些,如果要做更复杂的布局,哪就要用BaseAdapter了。
21ListView、Adapter、GridView讲解
data);
}
}
//为ListView设置适配器 listView.setAdapter(adapter); setContentView(listView);
ListView、Adapter、GridView讲解
案例二说明
案例说明:采用继承ListAcitvity的方式实现如案例一所示 的效果
ListView、Adapter、GridView讲解
ListView、Adapter、GridView讲解
案例三说明
案例说明:利用ListView不SimpleAdapter实现如下图所示的效 果
ListView、Adapter、GridView讲解
案例三项目布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5px"/> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFFFFFFF" android:textSize="22px" /> <TextView android:id="@+id/info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFFFFFFF" android:textSize="13px" /> </LinearLayout> </LinearLayout>
listview使用方法
listview使用方法listview是android开发中最常用的控件之一,它可以以列表形式展示数据,并且可以支持用户的滑动和点击操作。
在本篇文章中,我们将介绍listview的使用方法以及常用属性和方法。
1. 布局文件中添加listview在布局文件中添加以下代码,即可创建一个简单的listview。
```<ListViewandroid:id='@+id/list_view'android:layout_width='match_parent'android:layout_height='match_parent' />```2. 创建适配器适配器是listview展示数据的关键。
我们需要创建一个适配器,并在适配器中实现数据的绑定和显示。
```public class MyAdapter extends BaseAdapter {private List<String> mData;public MyAdapter(List<String> data) {mData = data;}@Overridepublic int getCount() {return mData.size();}@Overridepublic Object getItem(int position) {return mData.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder;if (convertView == null) {convertView =LayoutInflater.from(parent.getContext()).inflate(yout.i tem_layout, parent, false);viewHolder = new ViewHolder();viewHolder.mTextView =convertView.findViewById(R.id.text_view);convertView.setTag(viewHolder);} else {viewHolder = (ViewHolder) convertView.getTag();}viewHolder.mTextView.setText(mData.get(position));return convertView;}private static class ViewHolder {private TextView mTextView;}}```在适配器中,我们通过实现BaseAdapter类的方法来为listview 绑定数据。
Android listview与adapter用法
Android listview与adapter用法listview与adapter用法博客分类:android一个ListView通常有两个职责。
(1)将数据填充到布局。
(2)处理用户的选择点击等操作。
第一点很好理解,ListView就是实现这个功能的。
第二点也不难做到,在后面的学习中读者会发现,这非常简单。
一个ListView的创建需要3个元素。
(1)ListView中的每一列的View。
(2)填入View的数据或者图片等。
(3)连接数据与ListView的适配器。
也就是说,要使用ListView,首先要了解什么是适配器。
适配器是一个连接数据和AdapterView (ListView就是一个典型的AdapterView,后面还会学习其他的)的桥梁,通过它能有效地实现数据与AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加方便Android中提供了很多的Adapter,表4-5列出了常用的几个。
其实适配器还有很多,要注意的是,各种Adapter只不过是转换的方式和能力不一样而已。
下面就通过使用不同的Adapter来为ListView绑定数据(SimpleCursorAdapter暂且不讲,后面讲SQLite 时会介绍)。
4.12.1 ListView使用ArrayAdapter用ArrayAdapter可以实现简单的ListView的数据绑定。
默认情况下,ArrayAdapter绑定每个对象的toString值到layout中预先定义的TextView控件上。
ArrayAdapter的使用非常简单。
实例:工程目录:EX_04_12在布局文件中加入一个ListView控件。
<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><!-- 添加一个ListView控件--><ListViewandroid:id="@+id/lv"android:layout_width="fill_parent"android:layout_height="fill_parent"/></LinearLayout>然后在Activity中初始化。
simpleadapter的用法
simpleadapter的用法SimpleAdapter是Android中的一个适配器类,用于将数据源绑定到ListView或GridView等控件上。
它是BaseAdapter的一个简单实现类。
SimpleAdapter的构造函数有多个重载,最常用的构造函数参数为Context、List<? extends Map<String, ?>>、int[]和String[]。
其中,Context表示上下文,List<? extends Map<String, ?>>表示数据源,int[]表示显示数据的控件id数组,String[]表示与显示控件对应的数据源中的键名数组。
SimpleAdapter使用示例:```//准备数据源List<Map<String, Object>> data = new ArrayList<>();Map<String, Object> item1 = new HashMap<>();item1.put("name", "John");item1.put("age", 25);data.add(item1);Map<String, Object> item2 = new HashMap<>();item2.put("name", "Alice");item2.put("age", 30);data.add(item2);//准备布局文件int layoutResource = yout.simple_list_item_2;String[] from = {"name", "age"};int[] to = {android.R.id.text1, android.R.id.text2};//创建SimpleAdapter并绑定数据SimpleAdapter simpleAdapter = new SimpleAdapter(context, data, layoutResource, from, to);//将SimpleAdapter设置为ListView的适配器listView.setAdapter(simpleAdapter);```在上述示例中,SimpleAdapter将数据源data中的"name"和"age"对应的值绑定到布局文件simple_list_item_2中的android.R.id.text1和android.R.id.text2上,然后通过setAdapter方法将SimpleAdapter设置为ListView的适配器,实现数据的显示。
android实现下拉列表ListView
public class ListView extends Activity {/** Called when the activity is first created. */private List<;String>; list = new ArrayList<;String>;();private TextView myTextView;private Spinner mySpinner;private ArrayAdapter<;String>; adapter;private Animation au;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);//第一步:添加一个下拉列表项的list,这里添加的项就是下拉列表的菜单项list.add(";北京"; );list.add(";上海"; );list.add(";深圳"; );list.add(";南京"; );list.add(";重庆"; );myTextView = (TextView)findViewById(R.id.textview);mySpinner = (Spinner)findViewById(R.id.Spinner01);au=AnimationUtils.loadAnimation(this,R.anim.my_anim);//第二步:为下拉列表定义一个适配器,这里就用到里前面定义的list。
adapter = new ArrayAdapter<;String>;( this ,yout.simple_spinner_item, list);//第三步:为适配器设置下拉列表下拉时的菜单样式。
Android教学ListView详解
列表详解列表的显示需要三个元素:1.ListV eiw,用来展示列表的View。
2.适配器,用来把数据映射到ListView 上的中介。
3.数据,具体的将被映射的字符串、图片、或者基本组件。
知识点:1.ListView,是Android中比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
2.Adapter:Android中的Adapter可以这样理解,它是数据List和视图ListView之间的桥梁,数据在Adapter中做处理,然后显示到视图上面来。
Adapter有很多种。
列表的适配器分为三种类型:ArrayAdapter,SimpleAdapter和SimpleCursorAdapter。
●ArrayAdapter最为简单,只能展示一行字。
●SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。
●SimpleAdapter有最好的扩充性,可以自定义出各种效果。
3.List:●所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-V alue键值对。
例如:[ tom,1,c ],List中取出的都是Object对象。
●所有的List中可以有相同的元素,例如V ector中可以有[ tom,koo,too,koo ]。
●所有的List中可以有null元素,例如[ tom,null,1 ]。
●基于Array的List(V ector,ArrayList)适合查询。
●List基本上都是以Array为基础。
ListView使用的例子如下图:一、最简单的ListView1.package com.demo;2.import java.util.ArrayList;3.import java.util.List;4.import android.app.Activity;5.import android.os.Bundle;6.import android.widget.ArrayAdapter;7.import android.widget.ListView;8.public class MyListView extends Activity {9.private ListView listView;10.@Override11.public void onCreate(Bundle savedInstanceState){12.super.onCreate(savedInstanceState);13.listView = new ListView(this);14.listView.setAdapter(new ArrayAdapter<String>(this,yout.simple_expandable_list_item_1,getData()));15.setContentView(listView);16.}17.private List<String> getData(){18.List<String> data = new ArrayList<String>();19.data.add("测试数据1");20.data.add("测试数据2");21.data.add("测试数据3");22.data.add("测试数据4");23.return data;24.}25.}上面代码第14行,使用了ArrayAdapter()来装配数据,要装配这些数据就需要连接ListView 视图对象和数组的适配器来适配工作。
wpf listview控件用法
wpf listview控件用法WPF ListView控件用法:ListView控件是WPF中常用的用于显示和编辑数据的控件之一。
它提供了一种灵活的方式来呈现多行多列的数据,同时还支持排序、过滤和分组等功能。
下面将详细介绍ListView控件的用法。
1. 基本用法:ListView控件的基本用法非常简单。
首先,在XAML文件中定义一个ListView控件:```xaml<ListView x:Name="myListView"/>```然后,在代码中通过设置ItemsSource属性来为ListView绑定一个数据源:```csharpmyListView.ItemsSource = myData;```这里的myData可以是一个集合类(如List<T>)或者可以作为数据源的其他类型。
2. 列定义:ListView控件可以同时显示多列数据。
要定义列,我们可以在ListView 控件内部添加GridView作为View属性的子元素,并为GridView的Column 属性添加多个GridViewColumn元素:```xaml<ListView x:Name="myListView"><ListView.View><GridView><GridViewColumn Header="列1"DisplayMemberBinding="{Binding Property1}"/><GridViewColumn Header="列2"DisplayMemberBinding="{Binding Property2}"/><!-- 其他列定义 --></GridView></ListView.View></ListView>```这样就定义了两列,分别显示数据对象的Property1和Property2属性的值。
listview 方法
listview 方法ListView是Android开发中常用的控件之一,它可以展示一系列的数据,并且支持滚动。
在这篇文章中,我们将会介绍ListView 的一些常用方法。
1. setAdapter(Adapter adapter)这个方法是ListView最为重要的方法之一。
它用于设置ListView的适配器,适配器用来为ListView提供数据源。
2.setOnItemClickListener(AdapterView.OnItemClickListener listener)这个方法用于设置ListView的点击事件监听器。
3.setOnItemLongClickListener(AdapterView.OnItemLongClickListe ner listener)这个方法用于设置ListView的长按事件监听器。
4. setDivider(Drawable divider)这个方法用于设置ListView的分割线,分割线可以是一个Drawable对象。
5. setDividerHeight(int height)这个方法用于设置ListView的分割线的高度。
6. setSelector(Drawable selector)这个方法用于设置ListView的选中项背景,选中项背景可以是一个Drawable对象。
7. smoothScrollToPosition(int position)这个方法可以平滑地将ListView滚动到指定的位置。
8. setChoiceMode(int choiceMode)这个方法用于设置ListView的选择模式,选择模式可以是单选模式或多选模式。
9. getCheckedItemPosition()这个方法返回当前ListView中被选中的项的位置。
10. getFirstVisiblePosition()这个方法返回当前ListView中第一个可见项的位置。
listview控件使用的基本流程
listview控件使用的基本流程
1. 简介
ListView是一种常用的Android界面控件,用于显示一系列垂直滚动的列表项。
在Android应用中,我们经常会使用ListView来展示一些数据集合,如联系人列表、新闻列表等。
2. ListView的基本属性
在使用ListView之前,我们首先需要了解它的一些基本属性:
•android:id:ListView的唯一标识符。
•android:layout_width:ListView的宽度属性,可以使用match_parent(填充父容器)或具体数值(如200dp)进行设置。
•android:layout_height:ListView的高度属性,同样可以使用match_parent或具体数值进行设置。
•android:divider:分隔线的样式属性,可以设置为@null表示不显示分隔线,也可以设置为具体颜色的资源ID。
•android:dividerHeight:分隔线的高度属性,可以设置具体数值或wrap_content。
•android:listSelector:列表项被选中时的背景样式属性。
3. 使用ListView的基本步骤
使用ListView控件的基本步骤如下:
1.在XML布局文件中添加ListView控件。
```xml <ListView android:id=。
vs listview使用方法
vs listview使用方法以vs listview使用方法为标题,写一篇文章。
一、介绍ListView是Android开发中常用的控件之一,用于展示可滚动的列表。
在Visual Studio中,我们可以使用Xamarin.Forms来创建ListView,并通过数据绑定来填充列表项。
本文将详细介绍如何在Visual Studio中使用ListView控件。
二、创建ListView控件1. 打开Visual Studio,并创建一个新的Xamarin.Forms项目。
2. 在XAML页面中,添加一个ListView控件。
可以通过拖拽控件或手动编写代码来实现。
3. 设置ListView的布局属性,如宽度、高度、对齐方式等。
三、绑定数据源1. 定义一个数据模型类,用于存储列表项的数据。
可以包含多个属性,如名称、图片、描述等。
2. 在XAML页面中,设置ListView的ItemsSource属性为数据模型的集合。
3. 定义一个数据模板,用于展示列表项的布局和样式。
可以通过DataTemplate标签来实现。
四、自定义列表项1. 在XAML页面中,为ListView添加一个ItemTemplate属性,并设置为自定义的数据模板。
2. 在数据模板中,可以使用各种布局控件来定义列表项的布局,如StackLayout、Grid、RelativeLayout等。
3. 可以在数据模板中绑定数据模型的属性,以展示列表项的具体内容。
五、处理列表项的点击事件1. 在XAML页面中,为ListView添加一个ItemSelected事件处理程序。
2. 在事件处理程序中,可以获取被点击的列表项的数据,并进行相应的处理。
六、其他常用属性和方法1. 可以设置ListView的SelectionMode属性来定义选择模式,如单选或多选。
2. 可以使用ListView的ScrollTo方法来滚动到指定的列表项。
3. 可以使用ListView的RefreshCommand属性来实现下拉刷新功能。
listview控件的基本用法access
listview控件的基本用法access关于ListView控件的基本使用,本文将一步一步回答这个问题。
一、ListView控件的基本概念ListView是一种常见的控件,用于显示列表数据。
它可以以列表的形式展示数据,并且支持用户的滑动操作,以便查看更多的数据。
二、ListView控件的常见属性1. android:id:设置ListView的唯一标识符,用于在代码中找到该控件。
2. android:layout_width和android:layout_height:设置ListView的宽度和高度。
3. android:divider:设置列表项之间的分割线,可以是颜色、图片或者绘制的形状。
4. android:dividerHeight:设置列表项之间的分割线的高度。
5. android:listSelector:设置列表项的选中效果,可以是颜色、图片或者绘制的形状。
三、ListView控件的布局在XML布局中,可以通过以下代码创建一个简单的ListView控件:xml<ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="match_parent" />注意:要在代码中操作ListView控件,需要给它一个唯一的id,以便在后续的代码中找到它。
四、ListView控件的数据源在ListView中显示数据需要一个数据源,常用的数据源有数组或者集合。
可以通过以下代码将数组作为ListView的数据源:javaString[] data = {"item1", "item2", "item3"};ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, yout.simple_list_item_1, data);ListView listView = findViewById(R.id.listView);listView.setAdapter(adapter);在以上代码中,yout.simple_list_item_1是一个内置的布局文件,用于显示一个文本的列表项。
android的GridView控件案例
GridView控件案例1、实现效果2、实现原理本实例将实现对GridView控件的应用,实现原理有:将9个图片以三行三例的方式排列在窗口中,起到一个导向的作用3、实现步骤第一步:创建项目说明:这里创建一个android项目,名称改了GridViewTest包名设置为:第二步:设置布局文档(main.xml)具体代码如下:<?xml version="1.0"encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><ImageViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:id="@+id/imageView"android:src="@drawable/mainback"android:scaleType="fitXY"/><GridViewandroid:id="@+id/gridview"android:verticalSpacing="10dp"android:layout_marginBottom="20dip"android:layout_width="fill_parent"android:layout_height="fill_parent"android:stretchMode="columnWidth"android:gravity="center_horizontal"android:layout_marginTop="90dip"android:numColumns="3"/></RelativeLayout><!--属性说明android:numColumns="auto_fit" GridView的列数设置为自动android:columnWidth="90dp",每列的宽度,也就是Item的宽度android:stretMode="columnWidth" 缩放与列宽大小同步android:verticalSpacing="10dp" 两行之间的边距android:horizontalSpacing="10dp" 两列之间的边距-->第三步:创建一个自定义的GridView数据适配器: GirdViewdapter 说明:如下代码,具体功能参见代码中的注释public class GirdViewdapter extends BaseAdapter {//定义Contextprivate Context mContext;//定义整型数组即图片源 (这些图片来至于资源文件中)private int[] mImageIds ={R.drawable.maingriditem1,R.drawable.maingriditem2,R.drawable.maingriditem3,R.drawable.maingriditem4,R.drawable.maingriditem5,R.drawable.maingriditem6,R.drawable.maingriditem7,R.drawable.maingriditem8,R.drawable.maingriditem9,};// 构造函数(用于接收一个Activity实体)public GirdViewdapter(Context c){mContext = c;}//获取图片总个数public int getCount() {return mImageIds.length;}//获取图片在库中的位置public Object getItem(int position) {return position;}//获取图片IDpublic long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView = null; // 创建一个将返回给Activity窗口的图片对象if (convertView == null ) {//给ImageView设置资源imageView = new ImageView(mContext);//设置布局图片168*168显示imageView.setLayoutParams(new youtParams(168,168));//设置显示比例类型imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);}else {imageView = (ImageView) convertView;}imageView.setImageResource(mImageIds[position]);return imageView;}}第四步:设置GridViewTestActivity代码(1)设置onCreate方法的内容@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(yout.main);//获取GridView对象GridView gridview = (GridView) findViewById(R.id.gridview);//添加元素给gridviewgridview.setAdapter(new GirdViewdapter(this)); // 调用自定义的数据适配器//去掉黄色gridview.setSelector(new ColorDrawable(Color.TRANSPARENT));gridview.setOnItemClickListener(ListViewMainClickListener); //事件监听}(2)创建点击事件监听器/*** 九宫格点击事件监听器*/private OnItemClickListener ListViewMainClickListener=new OnItemClickListener(){public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { // TODO Auto-generated method stub//设置按下去效果ivImageView=(ImageView) arg1;int mColor = (int) Math.floor(Color.GRAY);ivImageView.setColorFilter(mColor, PorterDuff.Mode.MULTIPLY);Intent intent = new Intent();switch (arg2) {case 0:/*** 跳转到资质介绍*///intent.setClass(MainActivity.this, teamfc_dxproductActivity.class);//startActivity(intent);break;case 1:/*** 跳转到团队风采*///intent.setClass(MainActivity.this, a_tuanduifengcai.class);//startActivity(intent);break;case 2:/*** 跳转到智能广告*///intent.setClass(MainActivity.this, app_advertisementActivity.class);//startActivity(intent);break;case 3:/*** 跳转到APP定制*///intent.setClass(MainActivity.this, AppCustomActivity.class);//startActivity(intent);break;case 4:/*** 跳转到自有媒体*///intent.setClass(MainActivity.this, Selfmedia_zk_Activity.class);//startActivity(intent);break;case 5:/*** 跳转到3G秒杀汇*///intent.setClass(MainActivity.this, G3seckillActivity.class);//startActivity(intent);break;case 6:/*** 跳转到会员营销*///intent.setClass(MainActivity.this, Vip_Massage_Activity.class);//startActivity(intent);break;case 7:/*** 客户服务*///intent.setClass(MainActivity.this, AEActivity.class);//startActivity(intent);break;case 8:/*** 服务网络*///intent.setClass(MainActivity.this, Web_service_this_Activity.class);// startActivity(intent);break;default:break;}GridViewTest.this.finish();}};第五步:运行项目,看到结果了。
ListView之一:Adapter介绍与使用
ListView之一:Adapter介紹與使用ListView是在Android很常見的一種視圖,ListView不論在電話簿中還是觀看大量的列表資料,都是會用得到。
ListView的使用需要搭配Adapter,Adapter是用來連接資料和ListView的,Ada pter除了會用到ListView中,另外會用到還有Spinner(類似下拉選單)的這個元件中。
在Google IO2009的其中一張投影片中,可以很清楚的看到其中的關係圖:從這張圖就可以看到Adapter基本上會分成Cursor類和ArrayList類的。
Cursor 和資料庫或目前電話中的資料有關,例如要抓出目前電話簿中的聯絡人資料,用的就是Cursor的Adapter,而自己在程式中建立的陣列資料,用的就會是Arr ayList類的Adapter。
最常用的有幾種Adapter:∙ArrayAdapter:將一組數組連繫到ListView∙SimpleAdapter:適用於自訂ListView外觀的應用場合∙BaseAdapter:抽象類別,所以有多個方法需要實作。
適用於需要自訂ListView外觀等靈活應用的場合。
∙SimpleCursorAdapter:將一組現有的資料庫或聯絡人等ContentProvider的資料查詢的結果連繫到Lis tView中首先,要使用ListView可以用ListView這個UI組件,放置到目前的Activity中。
另一個可以用的方式,是直接繼承ListActivity,這是一個Activity的子類,其中就會包含一個全螢幕的ListView物件。
ListActivity用法比較簡單:public class ListDemo1 extends ListActivity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);//注意:不能使用main中的layout,用了會出現錯誤//setContentView(yout.main);setListAdapter(new ArrayAdapter<String>(this,yout.simple_list_item_1, mStrings));//啟用按鍵過濾功能getListView().setTextFilterEnabled(true);}private static final String[] mStrings = new String[] {"大餅包小餅", "蚵仔煎", "東山鴨頭", "臭豆腐", "潤餅","豆花", "青蛙下蛋","豬血糕", "大腸包小腸", "鹹水雞","烤香腸","車輪餅","珍珠奶茶","鹹酥雞","大熱狗","炸雞排","山豬肉","花生冰","剉冰","水果冰","包心粉圓","排骨酥","沙茶魷魚","章魚燒","度小月", "aaa","abc","bbb","bcd","123"};}第8行:這個是對照一般的Activity中有的setContentView方法,因為是ListActivity所以不需要,用了也會有錯誤訊息。
Adapter模式在Android中的应用
Adapter模式在Android中的应用在Android程序开发中,Adapter模式是常用的一种设计模式。
Adapter模式用于将一个类的接口转换成客户希望的另一个接口。
这种模式主要适用于那些原本不兼容的类之间的接口转换。
在Android中,Adapter模式主要用于ListView、RecyclerView等控件中,将数据源和界面进行绑定。
ListView是Android中比较常用的控件之一,它可以用来显示一组滚动的数据列表。
ListView可以显示的数据通常来自于一个List或者一个数组,这些数据源需要通过适配器(Adapter)来连接到ListView上。
Adapter把数据源和ListView连接起来,并根据ListView的要求,提供ListView需要的数据和组件,负责将组件和数据绑定。
Adapter模式正是这个流程的精髓所在。
在实际开发过程中,我们常常需要对ListView中的每个Item进行设计。
比如需要在每个Item中放置一张图片,一段文字等等。
Adapter模式可以将数据和UI组件分离,使UI组件不需要知道数据是从哪里来的。
Adapter负责数据的处理,而UI组件则根据Adapter提供的数据进行渲染。
Android中提供了两个重要的Adapter类:ArrayAdapter和BaseAdapter。
ArrayAdapter是一个简单的Adapter,可以用来处理数据类型比较简单的情况,比如只需要显示一些字符串。
BaseAdapter则是一个更加通用的Adapter,可以用来处理复杂的UI组件以及数据源之间的关系。
BaseAdapter需要程序员实现其中的一些方法,来实现数据和UI绑定的过程。
除此之外,在Android中还有一个RecyclerView控件。
RecyclerView是一个更加高级的RecyclerView,它比ListView可以处理更加复杂的UI组件。
RecyclerView始终是基于Adapter模式来实现的,它需要一个Adapter类来将数据源和UI组件连接起来。
adapter用法
adapter用法Adapter(适配器)是一种常用的设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。
通过使用适配器,可以让那些原本由于接口不兼容而无法一起工作的类能够协同工作。
在软件开发中,适配器模式可以应用在多种场景中,从UI界面的适配到数据库的适配等等。
本文将介绍适配器的常见用法,并给出相关的参考内容,帮助读者更好地理解和应用适配器模式。
1. 接口适配器模式:有时候,我们需要在一个接口中实现多个方法,但是某些类并不需要实现所有方法,此时可以使用接口适配器模式。
接口适配器模式通过提供一个抽象类来实现接口,然后具体的类继承抽象类并只实现其中需要的方法。
这样,具体的类就可以选择性地实现接口中的方法,而不需要实现所有方法。
参考内容:- 《设计模式:可复用面向对象软件的基础》- 《精通设计模式:面向对象的软件构建》2. 类适配器模式:类适配器模式通过继承实现适配器,将需要适配的类作为父类,然后通过子类实现父类接口的方式来实现适配。
通过类适配器模式,我们可以复用已有的代码,同时实现接口的兼容性。
参考内容:- 《Head First 设计模式》- 《深入浅出设计模式》3. 对象适配器模式:对象适配器模式通过组合实现适配器,将需要适配的类作为一个成员变量,然后通过提供一个与目标接口一致的方法来实现适配。
对象适配器模式比类适配器模式更灵活,因为它可以适配多个类,而不仅仅是一个父类。
参考内容:- 《设计模式之禅》- 《大话设计模式》4. RecyclerView.Adapter:Android中的RecyclerView是一种高度可定制的列表控件,它需要通过一个适配器来提供数据和定义列表项的视图。
RecyclerView.Adapter是RecyclerView的适配器基类,我们可以继承该类来自定义列表项的布局和数据绑定等操作。
参考内容:- 《Android开发艺术探索》- 《第一行代码》5. ArrayAdapter:Android中的ArrayAdapter是一个简单的适配器实现,它可以将一个数组或List中的数据提供给ListView、Spinner等控件使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
列表的显示需要三个元素:
map.put("depName", depname);
list.add(map);
}
一定要以数据库作为数据源的时候,才能使用SimpleCursorAdapter,这里特别需要注意的一点是:不要忘了在AndroidManifest.xml文件中加入权限
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
String depid = jsonObject.getString("depId");
String depname = jsonObject.getString("depName");
Map<String,String> map = new HashMap();
map.put("depId", depid);
listView.setAdapter(adapter);
c.数据 具体的将被映射的字符串,图片,或者基本组件。
1.将从服务器传来的查询结果json格式的用for循环转换成list<Map<string,string>>格式。
2.设置两个参数from和to from为string数组,里面放的是map里的键值对,to是int数组,里面放的是listVIEW里内容的控件Id(要对应from里的键值对)
-----------------------------适配器
种类:
BaseAdapter 是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
ArrayAdapter(单列数组集合) 支持泛型操作,最为简单,只能展示一行字。
SimpleAdapter(数组集合) 有最好的扩充性,可以自定义出各种效果。
b.适配器 用来把数据映射到ListView上的中介。
new一个适配器,执行.setAdapter(adapter)方法
例子:
SimpleAdapter adapter = new SimpleAdapter(this,list,yout.lstviewitem,from,to);////第三个参数是listView里内容的那个布局
例子
//数据源
JSONArray array = new JSONArray(str);
List<Map<String,String>> list = new ArrayList();
for (int i=0;i<array.length();i++){
JSONObject jsonObject = array.getJSONObject(i);
a.ListVeiw 用来展示列表的View。
写两个布局文件,一个是listView,一个是listview里内容
在activity里找到listView
例子
//ListView
ListView listView = (ListView) findViewById(R.id.lstView);