Android开发学习(7)ListView
来源:互联网 发布:尼康d810调焦软件 编辑:程序博客网 时间:2024/05/16 01:33
很多时候,我们需要以列表的方式展示我们的商品,类似通讯录中联系人的列表展示页,今天我们就开始使用ListView做一个类似的功能
ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。先说说ListView的实现:
添加步骤:
- 准备ListView要显示的数据 ;
- 使用 一维或多维 动态数组 保存数据;
- 构建适配器 , 简单地来说, 适配器就是 Item数组 , 动态数组 有多少元素就生成多少个Item;
- 把 适配器 添加到ListView,并显示出来。
简单模式
效果图
主页面:
listview_diarys.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:id="@+id/LL_ListViewDiarys" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!--list父窗口 --> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/LV_Diarys"> </ListView></LinearLayout>
列表元素
listitem_diary.xml
<?xml version="1.0" encoding="utf-8"?><!--list中每个单元定义窗口 --><LinearLayout android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_height="wrap_content" android:id="@+id/ListItem_Diary" android:paddingBottom="3dip" android:paddingLeft="10dip"> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/ItemTitle" android:textSize="15sp"> </TextView> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/ItemText"> </TextView></LinearLayout>
加载列表
ListViewDiarysActivity.java
package com.xvshu.android;import android.app.Activity;import android.os.Bundle;import android.widget.ListView;import android.widget.SimpleAdapter;import java.util.ArrayList;import java.util.HashMap;/** * Created by xvshu on 2017/8/9. */public class ListViewDiarysActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview_diarys); //绑定XML中的ListView,作为Item的容器 ListView list = (ListView) findViewById(R.id.LV_Diarys); //生成动态数组,并且转载数据 ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); for(int i=0;i<30;i++) { HashMap<String, String> map = new HashMap<String, String>(); map.put("ItemTitle", "This is Title "+i); map.put("ItemText", "This is text "+i); mylist.add(map); } //生成适配器,数组===》ListItem SimpleAdapter mSchedule = new SimpleAdapter(this, mylist,//数据来源 R.layout.listitem_diary,//ListItem的XML实现 //动态数组与ListItem对应的子项 new String[] {"ItemTitle", "ItemText"}, //ListItem的XML文件里面的两个TextView ID new int[] {R.id.ItemTitle,R.id.ItemText}); //添加并且显示 list.setAdapter(mSchedule); }}
加入图片
效果图
元素扩展
<?xml version="1.0" encoding="utf-8"?><!--list中每个单元定义窗口 --><RelativeLayout android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:paddingBottom="4dip" android:paddingLeft="12dip"> <ImageView android:layout_width="wrap_content" android:id="@+id/itemImage" android:layout_height="fill_parent" android:src="@drawable/ic_android"> </ImageView> <TextView android:text="TextView01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/itemTitle" android:layout_toRightOf="@+id/itemImage" android:textSize="20dip"> </TextView> <TextView android:text="TextView02" android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/itemText" android:layout_toRightOf="@+id/itemImage" android:layout_below="@+id/itemTitle"> </TextView></RelativeLayout>
加载器扩展
package com.xvshu.android;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.*;import java.util.ArrayList;import java.util.HashMap;/** * Created by xvshu on 2017/8/9. */public class ListViewDiarysActivity extends Activity { ListView listView; String[] titles={"标题1","标题2","标题3","标题4"}; String[] texts={"文本内容A","文本内容B","文本内容C","文本内容D"}; int[] resIds={R.drawable.ic_android,R.drawable.ic_android,R.drawable.ic_android,R.drawable.ic_android}; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview_diarys); //绑定XML中的ListView,作为Item的容器 listView = (ListView) findViewById(R.id.LV_Diarys); listView.setAdapter(new ListViewAdapter(titles,texts,resIds)); } public class ListViewAdapter extends BaseAdapter { View[] itemViews; public ListViewAdapter(String[] itemTitles, String[] itemTexts, int[] itemImageRes) { itemViews = new View[itemTitles.length]; for (int i = 0; i < itemViews.length; i++) { itemViews[i] = makeItemView(itemTitles[i], itemTexts[i], itemImageRes[i]); } } public int getCount() { return itemViews.length; } public View getItem(int position) { return itemViews[position]; } public long getItemId(int position) { return position; } private View makeItemView(String strTitle, String strText, int resId) { LayoutInflater inflater = (LayoutInflater) ListViewDiarysActivity.this .getSystemService(Context.LAYOUT_INFLATER_SERVICE); // 使用View的对象itemView与R.layout.item关联 View itemView = inflater.inflate(R.layout.listitem_diary, null); // 通过findViewById()方法实例R.layout.item内各组件 TextView title = (TextView) itemView.findViewById(R.id.itemTitle); title.setText(strTitle); TextView text = (TextView) itemView.findViewById(R.id.itemText); text.setText(strText); ImageView image = (ImageView) itemView.findViewById(R.id.itemImage); image.setImageResource(resId); return itemView; } public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) return itemViews[position]; return convertView; } }}
总结
越走进安卓越发现,和java重合度非常高,页面也是,类似web的布局,如果有前端的经验,可以说入手完全无压力,希望大家一起学习,越来越对移动开发熟悉,了解,形成自己的逻辑。
阅读全文
0 0
- Android开发学习(7)ListView
- Android开发学习之 ListView
- Android 开发ListView学习总结
- Android开发学习笔记(十一)ListView/ActivityManager/ArrayAdapter学习
- Android开发学习笔记:浅谈ListView
- android开发学习篇之ListView详解
- ListView -- MarsChen Android 开发教程学习笔记
- Android开发学习笔记十 ListView
- Android学习(9)-ListView
- android ListView 学习(1)
- Android学习(29) --ListView
- [ListView]Android开发之ListView 适配器(Adapter)优化
- [ListView]Android开发之ListView 适配器(Adapter)优化
- android开发学习(三)—— ListView,layoutInflater,常用数据适配器
- 《Android开发从零开始》——34.ListView控件学习
- Android初级开发第八讲--ListView学习以及特性介绍
- Android开发学习之快速实现圆角ListView
- Android开发————ListView学习笔记
- OpenGL ES应用开发实践指南(android 卷)笔记 第五章1
- Caffe学习:使用pycaffe读取mean.binaryproto文件参数
- 谈谈react操作onMouseEnter、onMouseLeave结合css里的hover
- Mac 下验证下载文件的 MD5/SHA1/SHA256
- Android开源库整理(2)
- Android开发学习(7)ListView
- CSS3理解position属性
- Java 发送get post请求
- Caffe学习:使用pycaffe读取caffemodel参数
- Python多层异常的捕获
- 工厂模式和抽象工厂模式
- Python入门5_条件循环语句
- luoguP3402 最长公共子序列(LCS-->LIS)
- Java面向对象之包装类