通过实例学Android应用开发04

通过实例学Android应用开发04,第1张

通过实例学安卓开发
  • 实例
    • 题目
    • 程序结果展示界面
    • 涉及到的知识点
    • 实现过程
    • 源码

实例 题目

使用ListView控件和ArrayAdapter数据适配器实现列表方式的选择。

程序结果展示界面

涉及到的知识点
  1. 列表控件ListView及其数据适配器
    ListView是列表数据显示控件,以列表形式显示。ListAdapter及其相关类用于显示列表数据的数据适配器接口。

    抽象类BaseAdapter实现了ListAdapter接口,同时又是类ArrayAdapterSimpleAdapter的超类。

    单列数据的显示可以采用ArrayAdapter

    常用构造方法ArrayAdapter(Context,int,int,List):第一个参数是上下文,第二参数是列表控件的列表项的 布局文件 ,第三参数是列表布局文件中显示数据的控件,第四参数是列表数据。

    列表项的数据项有多个,则可采用SimpleAdapter

  2. 列表项选择监听器
    抽象类AdapterViewListView的超类(但不是直接父类),提供了设置列表项单击事件监听器的重要方法setOnItemClickListener()和内部接口OnItemClickListener,用于定义用户选择了某个列表项后的动作。

实现过程
  1. 新建一个Android应用工程
  2. 创建MainActivity对应的布局文件activity_main.xml,只包含一个ListView控件
  3. 创建一个与第2步中ListView控件相关的列表布局文件list_item.xml包含一个ImageView控件和一个TextView控件
  4. 编写程序MainActivity.java
  5. 运行
源码

activity_main.xml


<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">

    <ListView android:layout_width="match_parent" android:layout_height="wrap_content"
              android:id="@+id/listView"/>
LinearLayout>

list_item.xml


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content"
               android:src="@drawable/ic_launcher_foreground"/>
    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
              android:id="@+id/tv"
              android:layout_gravity="center_vertical"/>
LinearLayout>

MainActivity.java

package com.example.application;


import android.view.Gravity;
import android.view.View;
import android.widget.*;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private List<String> listData = new ArrayList<String>();
    private ListView listView;
    private ArrayAdapter<String> adapter;//指定接口参数的类型为String类型

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) this.findViewById(R.id.listView);//显示列表的控件
        listData.add("北京");
        listData.add("上海");
        listData.add("武汉");//给列表项赋值
        adapter = new ArrayAdapter<String>(this,R.layout.list_item,R.id.tv,listData);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                String str = "你选择了"+adapter.getItem(i);
                Toast toast = Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER,0,0);
                toast.show();
            }
        });
    }

}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/735710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存