ListView的理解

RecycleBin原理解析,带你领会ListView的View重用机制 ListView无疑是Android开发中使用最多的组件之一了,可以肯定是99%以上的应用中都是用了ListView,不过ListView也不是万能的,很多时候你会觉得ListView提供给我们的功能并不够,我们需要扩展ListView,或者重新自定义一个支持滚动,view重用特性的组件。如果我们能够了解ListView的内部实现原理,相信对于更好地利用ListView以及对其进行扩展都是不错的。转 阅读详情
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。抽空把对ListView的使用做了整理,并写了个小例子,如下图。

 列表的显示需要三个元素:

1.ListVeiw 用来展示列表的View。

2.适配器 用来把数据映射到ListView上的中介。

3.数据    具体的将被映射的字符串,图片,或者基本组件。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。

 我们从最简单的ListView开始:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
  * @author allin
  *
  */
public class MyListView extends Activity {
 
     private ListView listView;
     //private List<String> data = new ArrayList<String>();
     @Override
     public void onCreate(Bundle savedInstanceState){
         super .onCreate(savedInstanceState);
         
         listView = new ListView( this );
         listView.setAdapter( new ArrayAdapter<String>( this , android.R.layout.simple_expandable_list_item_1,getData()));
         setContentView(listView);
     }
     
     
     
     private List<String> getData(){
         
         List<String> data = new ArrayList<String>();
         data.add( "测试数据1" );
         data.add( "测试数据2" );
         data.add( "测试数据3" );
         data.add( "测试数据4" );
         
         return data;
     }
}

上面代码使用了ArrayAdapter(Context context, int textViewResourceId, List<T> objects)来装配数据,要装配这些数据就需要一个连接ListView视图对象和数组数据的适配器来两者的适配工作,ArrayAdapter的构造需要三个参数,依次为this,布局文件(注意这里的布局文件描述的是列表的每一行的布局,android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字,数据源(一个List集合)。同时用setAdapter()完成适配的最后工作。运行后的现实结构如下图:

SimpleCursorAdapter

  sdk的解释是这样的:An easy adapter to map columns from a cursor to TextViews or ImageViews defined in an XML file. You can specify which columns you want, which views you want to display the columns, and the XML file that defines the appearance of these views。简单的说就是方便把从游标得到的数据进行列表显示,并可以把指定的列映射到对应的TextView中。

  下面的程序是从电话簿中把联系人显示到类表中。先在通讯录中添加一个联系人作为数据库的数据。然后获得一个指向数据库的Cursor并且定义一个布局文件(当然也可以使用系统自带的)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
  * @author allin
  *
  */
public class MyListView2 extends Activity {
 
     private ListView listView;
     //private List<String> data = new ArrayList<String>();
     @Override
     public void onCreate(Bundle savedInstanceState){
         super .onCreate(savedInstanceState);
         
         listView = new ListView( this );
         
         Cursor cursor = getContentResolver().query(People.CONTENT_URI, null , null , null , null );
         startManagingCursor(cursor);
         
         ListAdapter listAdapter = new SimpleCursorAdapter( this , android.R.layout.simple_expandable_list_item_1,
                 cursor,
                 new String[]{People.NAME},
                 new int []{android.R.id.text1});
         
         listView.setAdapter(listAdapter);
         setContentView(listView);
     }
     
     
}

 Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);先获得一个指向系统通讯录数据库的Cursor对象获得数据来源。

 startManagingCursor(cursor);我们将获得的Cursor对象交由Activity管理,这样Cursor的生命周期和Activity便能够自动同步,省去自己手动管理Cursor。

 SimpleCursorAdapter 构造函数前面3个参数和ArrayAdapter是一样的,最后两个参数:一个包含数据库的列的String型数组,一个包含布局文件中对应组件id的int型数组。其作用是自动的将String型数组所表示的每一列数据映射到布局文件对应id的组件上。上面的代码,将NAME列的数据一次映射到布局文件的id为text1的组件上。

注意:需要在AndroidManifest.xml中如权限:<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

运行后效果如下图:

SimpleAdapter

simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)等等。下面的代码都直接继承了ListActivity,ListActivity和普通的Activity没有太大的差别,不同就是对显示ListView做了许多优化,方面显示而已。

下面的程序是实现一个带有图片的类表。

首先需要定义好一个用来显示每一个列内容的xml

vlist.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<? xml version = "1.0" encoding = "utf-8" ?>
< LinearLayout xmlns:android = "http://schemas.android.com/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 >

下面是实现代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
  * @author allin
  *
  */
public class MyListView3 extends ListActivity {
 
 
     // private List<String> data = new ArrayList<String>();
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
 
         SimpleAdapter adapter = new SimpleAdapter( this ,getData(),R.layout.vlist,
                 new String[]{ "title" , "info" , "img" },
                 new int []{R.id.title,R.id.info,R.id.img});
         setListAdapter(adapter);
     }
 
     private List<Map<String, Object>> getData() {
         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
 
         Map<String, Object> map = new HashMap<String, Object>();
         map.put( "title" , "G1" );
         map.put( "info" , "google 1" );
         map.put( "img" , R.drawable.i1);
         list.add(map);
 
         map = new HashMap<String, Object>();
         map.put( "title" , "G2" );
         map.put( "info" , "google 2" );
         map.put( "img" , R.drawable.i2);
         list.add(map);
 
         map = new HashMap<String, Object>();
         map.put( "title" , "G3" );
         map.put( "info" , "google 3" );
         map.put( "img" , R.drawable.i3);
         list.add(map);
         
         return list;
     }
}

使用simpleAdapter的数据用一般都是HashMap构成的List,list的每一节对应ListView的每一行。HashMap的每个键值数据映射到布局文件中对应id的组件上。因为系统没有对应的布局文件可用,我们可以自己定义一个布局vlist.xml。下面做适配,new一个SimpleAdapter参数一次是:this,布局文件(vlist.xml),HashMap的 title 和 info,img。布局文件的组件id,title,info,img。布局文件的各组件分别映射到HashMap的各元素上,完成适配。

运行效果如下图:

有按钮的ListView

但是有时候,列表不光会用来做显示用,我们同样可以在在上面添加按钮。添加按钮首先要写一个有按钮的xml文件,然后自然会想到用上面的方法定义一个适配器,然后将数据映射到布局文件上。但是事实并非这样,因为按钮是无法映射的,即使你成功的用布局文件显示出了按钮也无法添加按钮的响应,这时就要研究一下ListView是如何现实的了,而且必须要重写一个类继承BaseAdapter。下面的示例将显示一个按钮和一个图片,两行字如果单击按钮将删除此按钮的所在行。并告诉你ListView究竟是如何工作的。效果如下:

vlist2.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<? xml version = "1.0" encoding = "utf-8" ?>
< LinearLayout xmlns:android = "http://schemas.android.com/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 >
 
 
     < Button android:id = "@+id/view_btn"
         android:layout_width = "wrap_content"
         android:layout_height = "wrap_content"
         android:text = "@string/s_view_btn"
         android:layout_gravity = "bottom|right" />
</ LinearLayout >

程序代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/**
  * @author allin
  *
  */
public class MyListView4 extends ListActivity {
 
 
     private List<Map<String, Object>> mData;
     
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         mData = getData();
         MyAdapter adapter = new MyAdapter( this );
         setListAdapter(adapter);
     }
 
     private List<Map<String, Object>> getData() {
         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
 
         Map<String, Object> map = new HashMap<String, Object>();
         map.put( "title" , "G1" );
         map.put( "info" , "google 1" );
         map.put( "img" , R.drawable.i1);
         list.add(map);
 
         map = new HashMap<String, Object>();
         map.put( "title" , "G2" );
         map.put( "info" , "google 2" );
         map.put( "img" , R.drawable.i2);
         list.add(map);
 
         map = new HashMap<String, Object>();
         map.put( "title" , "G3" );
         map.put( "info" , "google 3" );
         map.put( "img" , R.drawable.i3);
         list.add(map);
         
         return list;
     }
     
     // ListView 中某项被选中后的逻辑
     @Override
     protected void onListItemClick(ListView l, View v, int position, long id) {
         
         Log.v( "MyListView4-click" , (String)mData.get(position).get( "title" ));
     }
     
     /**
      * listview中点击按键弹出对话框
      */
     public void showInfo(){
         new AlertDialog.Builder( this )
         .setTitle( "我的listview" )
         .setMessage( "介绍..." )
         .setPositiveButton( "确定" , new DialogInterface.OnClickListener() {
             @Override
             public void onClick(DialogInterface dialog, int which) {
             }
         })
         .show();
         
     }
     
     
     
     public final class ViewHolder{
         public ImageView img;
         public TextView title;
         public TextView info;
         public Button viewBtn;
     }
     
     
     public class MyAdapter extends BaseAdapter{
 
         private LayoutInflater mInflater;
         
         
         public MyAdapter(Context context){
             this .mInflater = LayoutInflater.from(context);
         }
         @Override
         public int getCount() {
             // TODO Auto-generated method stub
             return mData.size();
         }
 
         @Override
         public Object getItem( int arg0) {
             // TODO Auto-generated method stub
             return null ;
         }
 
         @Override
         public long getItemId( int arg0) {
             // TODO Auto-generated method stub
             return 0 ;
         }
 
         @Override
         public View getView( int position, View convertView, ViewGroup parent) {
             
             ViewHolder holder = null ;
             if (convertView == null ) {
                 
                 holder= new ViewHolder(); 
                 
                 convertView = mInflater.inflate(R.layout.vlist2, null );
                 holder.img = (ImageView)convertView.findViewById(R.id.img);
                 holder.title = (TextView)convertView.findViewById(R.id.title);
                 holder.info = (TextView)convertView.findViewById(R.id.info);
                 holder.viewBtn = (Button)convertView.findViewById(R.id.view_btn);
                 convertView.setTag(holder);
                 
             } else {
                 
                 holder = (ViewHolder)convertView.getTag();
             }
             
             
             holder.img.setBackgroundResource((Integer)mData.get(position).get( "img" ));
             holder.title.setText((String)mData.get(position).get( "title" ));
             holder.info.setText((String)mData.get(position).get( "info" ));
             
             holder.viewBtn.setOnClickListener( new View.OnClickListener() {
                 
                 @Override
                 public void onClick(View v) {
                     showInfo();                
                 }
             });
             
             
             return convertView;
         }
         
     }
     
     
     
     
}

  下面将对上述代码,做详细的解释,listView在开始绘制的时候,系统首先调用getCount()函数,根据他的返回值得到listView的长度(这也是为什么在开始的第一张图特别的标出列表长度),然后根据这个长度,调用getView()逐一绘制每一行。如果你的getCount()返回值是0的话,列表将不显示同样return 1,就只显示一行。

  系统显示列表时,首先实例化一个适配器(这里将实例化自定义的适配器)。当手动完成适配时,必须手动映射数据,这需要重写getView()方法。系统在绘制列表的每一行的时候将调用此方法。getView()有三个参数,position表示将显示的是第几行,covertView是从布局文件中inflate来的布局。我们用LayoutInflater的方法将定义好的vlist2.xml文件提取成View实例用来显示。然后将xml文件中的各个组件实例化(简单的findViewById()方法)。这样便可以将数据对应到各个组件上了。但是按钮为了响应点击事件,需要为它添加点击监听器,这样就能捕获点击事件。至此一个自定义的listView就完成了,现在让我们回过头从新审视这个过程。系统要绘制ListView了,他首先获得要绘制的这个列表的长度,然后开始绘制第一行,怎么绘制呢?调用getView()函数。在这个函数里面首先获得一个View(实际上是一个ViewGroup),然后再实例并设置各个组件,显示之。好了,绘制完这一行了。那再绘制下一行,直到绘完为止。在实际的运行过程中会发现listView的每一行没有焦点了,这是因为Button抢夺了listView的焦点,只要布局文件中将Button设置为没有焦点就OK了。

运行效果如下图:

从零开始:使用Mask2Former训练你的专属图像分割数据集 本文详细介绍了如何使用Mask2Former训练自定义图像分割数据集,从环境配置、数据集准备到模型训练与优化。通过实战技巧和问题排查指南,帮助开发者高效完成从零开始的图像分割任务,特别适合需要处理自定义数据集的AI研究人员和工程师。 阅读详情

相关推荐

用Python和sklearn预测NBA比赛胜负:从数据清洗到模型优化的完整流程

本文详细介绍了如何使用Python和sklearn构建NBA比赛胜负预测模型,涵盖从数据清洗、特征工程到模型优化与部署的完整流程。通过对比随机森林、XGBoost等主流算法,提供实战技巧和解决方案,帮助数据爱好者掌握体育数据分析的核心技术。

weixin_30823001的博客 136

Android ListView理解,BaseAdapter

ListView是Android开发过程中较为常见的组件之一,它将数据以列表的形式展现出来。一般而言,一个ListView由以下三个元素组成:1.View,用于展示列表,通常是一个xml所指定的。大家都知道Android的界面基本上是由xml文件负责完成的,所以ListView的界面也理所应当的使用了xml定义。例如在ListView中经常用到的“android.R.layout.sim...

250

新四化浪潮下,中年整车诊断工程师的黄金突围路

摘要 本文探讨了汽车电子诊断工程师在当前行业变革中的独特优势与发展路径。作者作为从业者指出,整车诊断岗位在汽车"新四化"浪潮中呈现"逆生长"特性:技术壁垒高、经验复利强、市场需求持续增长。中年工程师凭借丰富的案例积累和实战经验成为行业稀缺人才,薪资水平显著高于同龄段其他技术岗位。文章分析了四条职业发展路径(技术专家、技术管理、细分深耕、横向拓展),并警示了三大职业风险(执行层局限、技术停滞、成果沉淀不足)。最后提出具体建议,强调掌握UDS高阶、DoIP以太网诊断等核心技术的重要性,为中年技术人提供了清晰的职

Soly_kun的博客 309

ListView 简单理解

ListView(列表视图) ArrayAdapter,SimpleAdapter,BaseAdapter

跳出舒适圈 376

企业微信消息推送(一)接收消息服务器URL

企业微信限制过多,公司域名所有权检验不通过。采用接收消息服务器URL的方式。使用vscode,将UTF-8 BOM文本编码改为UTF-8。配置接收消息服务器URL。

Xiaoweidumpb 1万+

Vivado实战:AXI转PCIe IP核配置全流程(含性能优化技巧)

本文详细介绍了在Vivado环境中配置AXI转PCIe IP核的全流程,包括工程准备、IP核参数设置、BAR空间配置、中断系统优化以及TLP传输效率提升等关键步骤。特别分享了经过验证的性能优化技巧,帮助开发者显著提升PCIe链路的吞吐量和稳定性,适用于视频采集、高速数据记录等应用场景。

weixin_30892037的博客 553

对listView的理解

最简单的listView用的是ArrayAdapter ,把上下文对象 this item布局,数据源放入adapter中,然后listView布局setAdapter(adapter)就可以展现一个列表了import android.support.v7.app.ActionBarActivity; import android.app.Activity; import android.os.B

琦琦的博客 1046

【OpenClaw 故障排查完全指南】

OpenClaw 故障排查指南摘要 本指南针对OpenClaw 2026.2.26版本常见问题提供解决方案,适用于Windows/Linux/macOS平台。 核心问题及修复方案: 飞书插件连接失败:删除冲突插件或重装OpenClaw Ollama认证错误:设置环境变量OLLAMA_API_KEY="ollama-local" 配置警告:可安全忽略的安全扫描提示 端口占用:查找并终止占用18789端口的进程 插件重复加载:清理重复插件目录 快速修复: 提供一键修复PowerShell脚本

weixin_37572294的博客 1万+

listview的一些理解

1.listview.getchildat(position)中,position并不是item的绝对位置,而是目前处于屏幕可见的情况下的实际位置。比如,没有滑动的时候,item的getchildat的position为2,但是当listview滑动后,把当前这个item滑动到第一个可见的位置,那么getchildat的position就为0;还有一种用法就是,getchildat(0)获取到的永

fmlfch的博客 574

CAN(2)-GD32

GD32中CAN的特征。

小柚子的博客 554

YOLOv8改进策略【卷积层】| DEConv: 强度信息与梯度特征融合的细节增强 适用于小目标与细节目标检测任务

本文记录的是利用 模块优化 的目标检测网络模型。(Detail-Enhanced Convolution,细节增强卷积)的设计旨在,解决 目标检测网络中传统普通卷积缺乏目标细节相关先验、对小目标边缘、目标与背景边界等关键细节捕捉能力不足的问题,同时避免引入额外参数量与计算开销,以适配 对实时推理性能与检测精度的双重需求。DEA-Net: Single image dehazing based on detail-enhanced convolution and content-guided atte

Limiiiing的博客 349

自己对于ListView的理解以及常用用法

ListView虽然现在几乎被RecyclerView所替代,但是在一些简单的列表中ListView会自动给每个子项之间添加一条分隔线,如果使用RecyclerVIew实现相同的功能的话会显复杂。而且学习使用ListView会进一步了数据填充器Adapter和如何优化简单的代码。 ListView的简单用法 1.最简单的创建一个只含有ListView的布局:在ListView控件中设置完id和宽高后,就完成一个最简单的控件初始化 <?xml version="1.0" encoding="ut

weixin_47425891的博客 972

2025目标检测新方向:弱监督目标检测的最新论文研究与应用

2025目标检测新方向:弱监督目标检测的最新论文研究与应用 ,人工智能,计算机视觉,大模型,AI,本文聚焦2025年弱监督目标检测新方向,阐述其基础概念,包括弱监督学习定义、标注形式及面临的定位不准等挑战。介绍最新论文研究的多种算法,如基于点标注的算法等,还涉及相关模型、应用领域,以及评价指标、数据集、实现工具框架,分析未来趋势与补充挑战及解决方案,为该领域研究提供全面参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 7万+

listView,listView优化的理解

ListView 主要负责以列表的形式显示数据,并根据需要从Adapter中获取列表项;Adapter主要负责获取数据,并将数据加工为列表项制定的表现形式,供listView提取数据,并将数据加工为listView指定的表现形式, ArrayAdapter simpleAdapter BaseAdapter:BaseAdapter是最基础的适配器,是抽象类,在使用时,开发人员手动创...

weixin_34315189的博客 90

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

android listview的理解,Android ListView的理解

我有一个关于ListView的问题以及如何使用它.我的Prolem是我的listView只是视图的一部分,我不知道如何做到这一点.public class MainActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle saved...

weixin_31095703的博客 115

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ListView 的理解

如果不太懂下边就将ListView,大家注意看。 ListView 上边已经展示过它运行的效果了,这里就不展示运行效果了。 那么要使用ListView需要哪些步骤呢?举一个例子,可能不太恰当 冰箱里没有鸡蛋了,我们从家里提了一个篮子去超市买鸡蛋。就是这样的一个过程。我们来分解下这个步骤 冰箱 == 展示数据 == ListView 超市里的鸡蛋 == 数据 == ArrayList&l...

weixin_34062329的博客 113

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ListView理解

 ListView的理解: (1) 在日常开发中使用最频繁和最复杂的控件就是ListView控件了.它有两个很神奇的地方,第一个是它可以用列表的形式展示很多很多数据,第二个是它加载了很多数据却不会导致OOM; (2) ListView的继承关系-&gt;ListView和GridView都继承自AbsListView,可见GridView的用法和ListView差不多; (3) Adapter的作...

tianshi0356的博客 268

android listview的理解,自己对ListView的Adapter理解——Android学习

由于小弟初到贵境,人生路不熟,而对于简书文章编辑器发代码的操作更是头疼,不知道怎么很好的把java代码呈现出来,就直接上图了。后接代码,供学习。要拿的话,自己扒走贴上,格式化一下就O了我是一个安卓小白,在学的过程中把自己的理解给分享上来,希望有人高人指点指点,大家交流交流哈 ! ^ ^/**ListView的Adapter应用* 1、使用MVC设计模式* M:ListView——Item集合* V...

weixin_32111725的博客 181

Android ListView理解

BaseAdapter ListView是Android开发过程中较为常见的组件之一,它将数据以列表的形式展现出来。一般而言,一个 ListView由以下三个元素组 成:1.View,用于展示列表,通常是一个xml所指定的。大家都知道Android 的界面基本上是由xml文件负责完成的,所以ListView的界 面也理所应当的使用了xml定义。例如在 ListView中经常用到的

幻影 1831

Listview的理解①

关于llistview的简单介绍: listview即将会成为你经常用的控件,为什么呢?每一个手机的屏幕就只有那么大,而我们又看的信息是非常多的。比如看小说,看博客,看新闻。这些都是要用到 listview的。ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕。 首先我们可以先说一个listview的简单用法 实例代码:Ma

凌晨四点的洛杉矶 292

【Android学习笔记】ListView适配器的基本理解

对于ListView和ScrollView,个人意志是

Eephone的专栏 938

关于ListView中的getView()方法的理解

最近在弄android的通讯录来玩玩~ 然后就在纠结那个列表怎么弄才好.. 在博客园里搜了一下 http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html http://www.cnblogs.com/xiaowenji/archive/2010/12/08/1900579.html 结合这两位大人的随笔.终于搞定啦~~ a...

weixin_34228662的博客 82
上一篇: 我对fill_parent的理解
下一篇: Android中的Handler, Looper, MessageQueue和Thread
gwpJava
博客等级 码龄14年 11粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值