ListView用SimpleAdapter来实现自定义布局和点击
简单的ListView只能实现文字的列表显示。这里就不过多的介绍了,可自行百度找下。
而这次我介绍的是ListView用SimpleAdapter来实现自定义布局和点击。
一、首先要自定义一个列表的样式list_item_layout.xml文件。
<!--list_item_layout.xml-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><LinearLayoutandroid:layout_width="165dp"android:layout_height="120dp"android:paddingLeft="12dp"android:paddingRight="12dp"android:layout_marginTop="5dp"><!--自定义图片--><ImageViewandroid:id="@+id/imgv"android:layout_width="150dp"android:layout_height="120dp"android:src="@drawable/a0"></ImageView></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="120dp"android:orientation="vertical"android:paddingLeft="12dp"android:paddingRight="12dp"android:layout_marginTop="5dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="12dp"android:text="名称:"></TextView><TextViewandroid:id="@+id/name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""></TextView></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="12dp"android:text="主演:"></TextView><TextViewandroid:id="@+id/zy"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""></TextView></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="12dp"android:text="导演:"></TextView><TextViewandroid:id="@+id/dy"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""></TextView></LinearLayout></LinearLayout>
</LinearLayout>
二、自定义完一个list_item的布局文件后,就要在主页面上添加ListView主键,来使用list_item布局。
在主页面添加ListView组件。
<!--注意一定要声明一个id,方便java文件查找到该组件-->
<ListViewandroid:id="@+id/lv"android:layout_width="match_parent"android:layout_height="wrap_content"></ListView>
三、在主页面的控制器java文件里查找该组件,并添加第一步里的布局文件。
(1)声明需要的变量,这里声明的变量是死的,在真实的开发中是由后端传入的变量。
//模拟数据
private String[] name={"杀破狼2", "谍影重重5", "疯狂原始人", "叶问2", "赤道"},zy={"郑保瑞", "道格·里曼", " 柯克·德·米科", "叶伟信", "梁乐民/陆剑青"},dy={"吴京/托尼·贾/张晋", "马特·达蒙/弗兰卡·波坦特" , "尼古拉斯·凯奇", " 甄子丹/洪金宝", "张学友/张家辉"};
//这是模拟的图片数据,报错的话需要引入图片放在drawable文件夹里
private int[] imgv=new int[]{R.drawable.a0,R.drawable.a1,R.drawable.a2,R.drawable.a3,R.drawable.a4};
(2)在onCreate方法里添加自定义组件并添加点击事件
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//找到ListViewListView listView=findViewById(R.id.lv);//声明一个列表映射List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();for (int i=0;i< name.length;i++){//声明一个映射将值添加的映射列表中Map<String,Object> listitem=new HashMap<String,Object>();listitem.put("imgv",imgv[i]);listitem.put("name",name[i]);listitem.put("zy",zy[i]);listitem.put("dy",dy[i]);list.add(listitem);}//声明SimpleAdapter将this,列表映射,自定义的布局文件,文件需要的值等等传给每个列表项中SimpleAdapter adapter=new SimpleAdapter(this,list,R.layout.list_item_layout,new String[]{"imgv","name","zy","dy"},new int[]{R.id.imgv,R.id.name,R.id.zy,R.id.dy});listView.setAdapter(adapter);//给每个列表项添加点击事件listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {//这里写具体点击的事件,下面写的是一个弹框Toast.makeText(MainActivity.this,name[i],Toast.LENGTH_SHORT).show();}});}
到这里就完成了SimpleAdapter自定义ListView布局和点击事件。