ListView的使用
来源:互联网 发布:淘宝怎么设置登录验证 编辑:程序博客网 时间:2024/06/03 17:54
Use ListView
ListView是用于将子项展示成垂直滚动的一个控件,其子项通常来源于一个适配器(Adapter),其在界面上的一般情况如下图所示:
接下来让我们一起实现一个简单的ListView的例子,打开Android Studio,新建ListViewDemo项目并修改其xml文件如下所示:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.tt.listviewdemo.MainActivity"> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView></RelativeLayout>
如上在xml文件中使用<listview>
标签即可在布局中添加一个ListView,这里我们指定ListView的宽度适配父控件,高度包裹自身.
前面有讲到ListView中的子项item来源于适配器,接下来我们为这个ListView添加适配器,新建ListViewAdapter类并让其继承自BaseAdapter
,实现其抽象方法,初步的类内容如下所示:
import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;/** * Add Some Comment */public class ListViewAdapter extends BaseAdapter{ private static final String TAG = "ListViewAdapter"; @Override public int getCount() { return 0; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { return null; }}
其中getCount()
方法返回的是该列表一共有多少个子项,getItem()
返回的是当前子项的数据对象,getView()
返回的是当前子项按照数据对象所初始化得到的View
对象,这里我们就简单的实现一个单行文本的LiseView.
大概了解了各个覆写函数的作用,接下来我们给ListViewAdapter添加构造器已方便使用,由于我们在getView()
方法中需要根据数据对象构造View,难免需要获取Resource下的部分资源,因此我们将拥有该ListView的Activity的上下文传入.修改后的ListViewAdapter内容如下:
import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;/** * Created by tuozhaobing on 15-12-6. * adapter for listview */public class ListViewAdapter extends BaseAdapter{ private static final String TAG = "ListViewAdapter"; private Context mContext; public ListViewAdapter(Context context) { this.mContext = context; } @Override public int getCount() { return 50; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView textView = new TextView(mContext); textView.setText("我是ListView的第"+position+"个子项(TextView)"); return textView; }}
这里我已经完成了ListViewAdapter的getView()
方法,让绑定这个适配器的ListView是一个拥有50个TextView子项的列表,至此,我们完成了适配器的编写,那么剩下的工作就是让我们的ListView从适配器中拿子项了,我们通过findViewById(ResourceId)
找到该ListView,通过setAdapter(Adapter)
方法为该ListView添加适配器.详细代码如下所示:
import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ListView;public class MainActivity extends AppCompatActivity { private ListView mListView; private ListViewAdapter mListViewAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } public void initView(){ mListView = (ListView)findViewById(R.id.listview); mListViewAdapter = new ListViewAdapter(this); } public void initData(){ mListView.setAdapter(mListViewAdapter); }}
关于为什么要使用自己的initView()
和initData()
请参考Android Component中,Activity中的介绍和解释.
运行效果如下图(注意Adapter的position是从0开始的):
源码下载
- listview 的使用
- ListView的使用
- ListView的使用技巧
- delphi ListView 的使用
- ListView的使用
- EasyMF ListView 的使用
- ListView的使用
- listview的使用1
- ListView的使用
- ListView控件的使用
- ListView的使用
- Listview 的基本使用
- ListView的使用1
- ListView的使用2
- android ListView的使用
- listView的使用
- VB ListView的使用
- ListView 控件的使用
- mysql sql语句大全
- android中的sharedPreferences应用与理解
- 山东省第二届ACM大学生程序设计竞赛 Binomial Coeffcients 递推
- ArcGIS教程:使用 ArcGIS for Desktop 服务
- 大数运算
- ListView的使用
- Android学习之设计模式之工厂模式
- 获取屏幕的宽高
- JAVA中ThreadLocal用法介绍
- Java NIO系列教程(二) Channel
- Linux下Apache Hadoop2.7.2的集群安装以及WordCount示例
- 5.Object-c/IOS 枚举类型:enum,NS_ENUM,NS_OPTIONS
- Android Low memory killer
- java集合框架概述