AndroidStudio中ListView的使用方法之SimpleAdapter适配器
Posted 想飞--++
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AndroidStudio中ListView的使用方法之SimpleAdapter适配器相关的知识,希望对你有一定的参考价值。
androidStudio中ListView的四种使用方法之第三种SimpleAdapter适配器。
首先我们先了解一下SimpleAdapter类。
SimpleAdapter类是用来处理ListView显示数据的,这个类可以将任何自定义的xml布局文件作为列表项来使用。
SimpleAdapter构造方法的原型为:
public SimpleAdapter ( Context context,List<?extends Map<String,?>> data,int resource,String[] form,int[] to)
参数值 | 关键字或名称的作用 |
context | SimpleAdapter关联的View的运行环境 |
data | 一个Map组成的List。列表种的每个条目对应列表中的一行,每个Map中应该包含from参数中指定的键 |
resource | 定义列表项的布局文件的资源id |
from | 被添加到Map映射上的键名 |
to | 将绑定数据的视图的Id和from参数对应 |
以上是SimpleAdapter的基础知识,接下来我们用一个例子来展示SimpleAdapter的具体使用方法。
创建一个名为ListViewSimpleAdapter的空白Activity,并为其xml文件添加一个ListView组件。
在ListViewSimpleAdapter.java文件中连接xml文件和ListView主键,并创建所需要的数据。
接下来我们要创建一个SimpleAdapter适配器,由SimpleAdapter的基础可知我们需要一个列表项的布局资源。
由此我们新建一个layoutitem1.xml文件,作为一个列表项的资源文件,并在这个xml文件布局。如图所示
准备好以后我们再次回到ListViewSimpleAdapter.java中创建SimpleAdapter适配器,并为适配器添加好对应的参数。
看到getData()报错没关系,我们按alt+enter键创建一个getData()方法用来添加数据,并为listview添加SimpAdapter适配器。
最后在AndroidMainfest.xml中为MainActivity2添加过滤器,运行就行了。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".ListViewSimpleAdapter">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
效果图如下:
原代码如下:
ListViewSimpleAdapter.java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ListViewSimpleAdapter extends AppCompatActivity {
ListView listView;
int[] imageArr={R.drawable.diqiu,R.drawable.jinxing,R.drawable.muxing,R.drawable.tuxing,R.drawable.huoxing};
String[] titleArr={"地球","金星","木星","土星","火星"};
String[] contentArr={"地球的介绍","金星的介绍","木星的介绍","土星的介绍","火星的介绍"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view_simple_adapter);
//连接listView
listView=(ListView)findViewById(R.id.ListViewsimple);
//创建SimpleAdapter适配器
SimpleAdapter simpleAdapter=new SimpleAdapter(this,getData(),R.layout.layoutitem1,
new String[]{"img","name","content"},new int[]{R.id.image2,R.id.textTitle,R.id.textContent});
//为listview添加SimpleAdapter适配器
listView.setAdapter(simpleAdapter);
}
private List<? extends Map<String,?>> getData() {
List<Map<String,Object>> list;
Map<String,Object> map;
list=new ArrayList<Map<String,Object>>();
for(int i=0;i<imageArr.length;i++){
map=new HashMap<String,Object>();
map.put("img",imageArr[i]);
map.put("name",titleArr[i]);
map.put("content",contentArr[i]);
list.add(map);
}
return list;
}
}
activity_list_view_simple_adapter.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ListViewSimpleAdapter">
<ListView
android:id="@+id/ListViewsimple"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
layoutitem1.xml
<?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="horizontal">
<ImageView
android:id="@+id/image2"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/img8"></ImageView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/textTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="地球"
android:textStyle="bold"
android:layout_marginTop="20dp"
android:textSize="18sp">
</TextView>
<TextView
android:id="@+id/textContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="地球的介绍"
android:layout_marginTop="20dp"></TextView>
</LinearLayout>
</LinearLayout>
我们还可以使用setOnItemClickListener方法来对每一个列表项添加点击事件,在这里我就不详细讲解了
我将在下一篇博客中展示自定义适配器的使用方法
小白在线欢迎指点。
以上是关于AndroidStudio中ListView的使用方法之SimpleAdapter适配器的主要内容,如果未能解决你的问题,请参考以下文章
AndroidStudio中ListView的使用方法之SimpleAdapter适配器
AndroidStudio中ListView的使用方法之SimpleAdapter适配器