Android控件ListView
来源:互联网 发布:苍南哪有淘宝培训 编辑:程序博客网 时间:2024/06/15 04:00
listview的使用
ListView :用来在界面上显示数据列表。
ListView 原理
Model Person
View ListView
Controle Adapter 数据适配器
1、在布局文件中添加一个listview控件
2、在代码中找到这个listview控件
3、创建一个数据适配器为listview填充数据
三种数据适配器
BaseAdapter
ListView lv = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取ListView控件 lv = (ListView)findViewById(R.id.lv); //设置适配器 lv.setAdapter(new MyListAdapter()); } public class MyListAdapter extends BaseAdapter{//返回要显示的总条目数量public int getCount() {// TODO Auto-generated method stubreturn 600;}//返回该位置的条目对象public Object getItem(int position) {// TODO Auto-generated method stubreturn null;}//返回该位置的条目idpublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubTextView tv = null;if(null == convertView)//没有旧的条目可用则创建新的条目{tv = new TextView(MainActivity.this);System.out.println("convertview null" + position);}else {//有旧的条目被隐藏则重新使用旧的条目显示数据tv = (TextView) convertView;System.out.println("复用旧的" + position);}tv.setText("test"+position);tv.setTextSize(50);return tv;}}
ArrayAdapter
使用ArrayAdapter为listview填充数据的步骤:1、在布局文件中添加ListView
2、在代码中得到这个listview控件
3、调用listview.setAdapter()填充数据
//使用适配器为listview填充数据
//new ArrayAdapter:context 上下文,resourceId 条目布局文件的资源ID,object[] 要显示的数据
lv.setAdapter(new ArrayAdapter<String>(this, R.layout.item, new String[]{"王菲","谢霆锋","张柏芝","李亚鹏"}));
SimpleAdapter
使用ArrayAdapter为listview填充数据的步骤:1、在布局文件中添加ListView
2、在代码中初始化这个listview控件
3、调用listview.setAdapter()填充数据
/** * context 上下文 * data list 包含map * resource item 布局文件 * from 就是我们map集合中存的key * to item 布局中定义的控件的id * */List<Map<String, String>> data = new ArrayList<Map<String,String>>();Map<String, String> map1 = new HashMap<String, String>();map1.put("name", "张飞");map1.put("phone", "138888");Map<String, String> map2 = new HashMap<String, String>();map2.put("name", "赵云");map2.put("phone", "110");Map<String, String> map3 = new HashMap<String, String>();map3.put("name", "曹操");map3.put("phone", "1900");Map<String, String> map4 = new HashMap<String, String>();map4.put("name", "貂蝉");map4.put("phone", "114");// 把map存到 list集合 data.add(map1);data.add(map2);data.add(map3);data.add(map4);//设置listview的数据适配器 lv.setAdapter(new SimpleAdapter(getApplicationContext(), data, R.layout.item, new String[]{"name","phone"}, new int[]{R.id.tv_name,R.id.tv_phone}));
条目的布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" ><TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv_id" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv_name" /> </LinearLayout>
复杂ListView条目的显示
步骤:
1、在布局文件中添加ListView
2、在代码中初始化这个listview控件
lv = (ListView) findViewById(R.id.lv);
3、自定义数据适配器,继承了BaseAdapter,getView中我们不是简单的返回TextView,我们可以用布局文件来显示更复杂的条目
4、调用lv.setAdapter(new MyAdapter())填充数据
1、在布局文件中添加ListView
2、在代码中初始化这个listview控件
lv = (ListView) findViewById(R.id.lv);
3、自定义数据适配器,继承了BaseAdapter,getView中我们不是简单的返回TextView,我们可以用布局文件来显示更复杂的条目
4、调用lv.setAdapter(new MyAdapter())填充数据
public View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stub View v;if (null == convertView) {//用布局填充器从条目布局文件获取ListView条目显示的Viewv = View.inflate(MainActivity.this, R.layout.lv_item, null);}else {v = convertView;}//从条目布局中获取相应的控件ImageView iv = (ImageView) v.findViewById(R.id.ivicon);iv.setImageResource(R.drawable.ic_launcher); TextView lv1 = (TextView) v.findViewById(R.id.tvtitle); lv1.setText("标题"+position); TextView lv2 = (TextView) v.findViewById(R.id.tvcontent); lv2.setText("内容"+position);return v;}
条目布局文件lv_item
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/ivicon" android:layout_width="70dp" android:layout_height="70dp" /> <TextView android:id="@+id/tvtitle" android:layout_toRightOf="@id/ivicon" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/tvcontent" android:layout_marginTop="10dp" android:layout_toRightOf="@id/ivicon" android:layout_below="@id/tvtitle" android:layout_width="match_parent" android:layout_height="wrap_content" /></RelativeLayout>
//1种 写法 获取 布局填充器 //view = View.inflate(MainActivity.this, R.layout.item, null);//2 种方法获取布局填充 //view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item,null);//3种写法 利用系统给我们提供的一个服务 LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);view = inflater.inflate(R.layout.item, null);
0 0
- Android 控件之ListView
- Android 控件 ListView
- android控件12 ListView
- Android控件之ListView
- Android控件之ListView
- android ListView控件
- Android开发--控件ListView
- android控件之ListView
- Android控件之ListView
- [android]控件ListView简介
- android-listview控件
- Android 控件 ListView 用法
- Android 自定义ListView控件
- Android控件ListView
- android 控件 ListView
- Android 控件ListView
- Android控件之ListView
- Android--ListView控件
- 指针数组和数组指针的内存布局
- Spring 代码中执行事务回滚
- mysql客户端工具使用
- static全局变量与普通的全局变量的区别详细解析
- PHP学习01----PHP简介
- Android控件ListView
- C++作业四
- android中drawable资源文件的使用
- yuv420格式
- 数据结构_分别使用for循环和递归打印1-N的所有整数,比较运行时间
- MySQL索引背后的数据结构及算法原理
- ZOJ3778 Talented Chef(贪心)
- POJ 1182 食物链
- 三种观察者模式的C#实现