使用 ListView 和 SimpleAdapter 展现数据
问题描述:
- 该程序的作用是使用 ListView 和 SimpleAdapter 展现一个带图片的城
市列表,当点击某一城市时,将在列表上方显示该城市名称(如图1所示)。 - 备注:
(1)考生按照系统提示目录保存试题文件,每道试题建立一个文件夹,文
件夹名为题目编号。该试题文件夹名为“1”,该文件夹内应包含6个文件,分别为:
项目打包压缩文件:App1.zip
程序逻辑文件:MainActivity.java 主界面描述文件:activity_main.xml
列表描述文件:list_item.xml
程序运行截图界面(点击城市选项前):1.png
程序运行截图界面(点击城市选项后):2.png
(2)程序要求:
使用 ListView 和 SimpleAdater 展现城市列表。
图片数据请参考案例资源
代码如下:
ListView1Activity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".basicItems.Adapter_ListView.ListView1Activity">
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginStart="150dp"
android:layout_marginTop="32dp"
android:text="城市名称"
android:textSize="24dp" />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="533dp"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="0dp"
android:layout_marginBottom="0dp"
tools:layout_editor_absoluteX="57dp"
tools:layout_editor_absoluteY="141dp" />
</RelativeLayout>
SimpleAdapterActivity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".basicItems.Adapter_ListView.SimpleAdapterActivity">
<!-- 定义一个用于显示城市图标的ImageView -->
<ImageView
android:id="@+id/img_tou"
android:layout_width="76dp"
android:layout_height="80dp"
app:srcCompat="@drawable/dynamic" />
<!-- 定义一个竖直方向的LinearLayout,把城市的名称,等级 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="82dp"
android:orientation="vertical">
<TextView
android:id="@+id/city_name"
android:layout_width="76dp"
android:layout_height="40dp"
android:text="江苏"
android:textColor="#1D1D1C"
android:textSize="24dp" />
<TextView
android:id="@+id/level"
android:layout_width="74dp"
android:layout_height="42dp"
android:text="三线"
android:textColor="#1D1D1C"
android:textSize="24dp" />
</LinearLayout>
</LinearLayout>
ListView1Activity .java
package com.example.learning.basicItems.Adapter_ListView;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import com.example.learning.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ListView1Activity extends AppCompatActivity {
// 构建数据
private String[] names = new String[]{"北京", "上海", "广州","深圳","杭州"};
private String[] levels = new String[]{"一线","一线", "二线","一线","二线"};
private int[] imgIds = new int[]{R.drawable.a, R.drawable.b, R.drawable.c,R.drawable.d,R.drawable.e};
// 声明组件
TextView textView6;
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view1);
// 获取组件
textView6 = findViewById(R.id.textView6);
listView = findViewById(R.id.listView1);
// 添加数据到每个list_item
List<Map<String,Object>> listItems = new ArrayList<>();
for (int i = 0; i < names.length; i++) {
Map<String,Object> map = new HashMap<>();
map.put("img_tou",imgIds[i]);
map.put("city_name",names[i]);
map.put("level",levels[i]);
listItems.add(map);
}
// 创建一个SimpleAdapter
SimpleAdapter simpleAdapter = new SimpleAdapter(getApplicationContext(),
listItems,
R.layout.activity_simple_adapter,
new String[]{"img_tou","city_name","level"},
new int[]{R.id.img_tou,R.id.city_name,R.id.level});
listView.setAdapter(simpleAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// 显示选中的城市名称
textView6.setText(names[position]);
}
});
}
}