Android(14) ArrayAdapter(数组适配器)的三种方法-程序员宅基地

技术标签: ★十、Android★  ArrayAdapter  

ArrayAdapter数组适配器用于绑定格式单一的数据,数据源可以是集合或者数组

列表视图(ListView)以垂直的形式列出需要显示的列表项。

实现过程:新建适配器->添加数据源到适配器->视图加载适配器

第一种:直接用ListView组件创建

列表每一行只有一行文字

效果如图:

activity_list布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/lv_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="@android:color/holo_blue_dark"
        android:dividerHeight="1dp"
        android:entries="@array/list"></ListView>
    <!--
    ListView 是列表控件,用于显示一组或许多(成百、上千)相似内容用的
    android:divider :表示listview的分割线
    android:dividerHeight:表示分割线的高度
    android:entries:在res/layout的string.xml中添加数组资源的名称
    -->
</LinearLayout>android:entries="@array/list"></ListView>
    <!--
    ListView 是列表控件,用于显示一组或许多(成百、上千)相似内容用的
    android:divider :表示listview的分割线
    android:dividerHeight:表示分割线的高度
    android:entries:在res/layout的string.xml中添加数组资源的名称
    -->
</LinearLayout>
 
在res/layout的string.xml中添加数组资源的名称
<resources>
    <string name="app_name">ArrayAdapter数组适配器</string>
    <string-array name = "list">   <!--数组资源名称为list 与layout中对应-->
        <item>第一行</item>
        <item>第二行</item>
        <item>第三行</item>
        <item>第四行</item>
        <item>第五行</item>
        <item>第六行</item>
        <item>第七行</item>
        <item>第八行</item>
        <item>第九行</item>
        <item>第十行</item>
        <item>第十一行</item>
        <item>第十二行</item>
        <item>第十三行</item>
      </string-array>
</resources>
<string-array name = "list">   <!--数组资源名称为list 与layout中对应-->
        <item>第一行</item>
        <item>第二行</item>
        <item>第三行</item>
        <item>第四行</item>
        <item>第五行</item>
        <item>第六行</item>
        <item>第七行</item>
        <item>第八行</item>
        <item>第九行</item>
        <item>第十行</item>
        <item>第十一行</item>
        <item>第十二行</item>
        <item>第十三行</item>
      </string-array>
</resources>

MainActivity.java:

 
package com.ied.arrayadapter;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        listView = (ListView) findViewById(R.id.lv_list);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String result = parent.getItemAtPosition(position).toString();//获取选择项的值
                Toast.makeText(MainActivity.this,"您点击了"+result,Toast.LENGTH_SHORT).show();
            }
        });
    }
} ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        listView = (ListView) findViewById(R.id.lv_list);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String result = parent.getItemAtPosition(position).toString();//获取选择项的值
                Toast.makeText(MainActivity.this,"您点击了"+result,Toast.LENGTH_SHORT).show();
            }
        });
    }
}

第二种:

三个参数 (使用android自带的 android.R.layout.simple_list_item_1)
activity_list布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/lv_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="@android:color/holo_blue_dark"
        android:dividerHeight="1dp"></ListView>
</LinearLayout>

MainActivity.java:

package com.ied.arrayadapter;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private ArrayAdapter<String> arrayAdapter;
    private SimpleAdapter simpleAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        listView = (ListView) findViewById(R.id.lv_list);

        String data[] = {"1","2","3","4","5","6","7","8","9","10","11","12","13"};
           //创建数组适配器,作为数据源和列表控件联系的桥梁
           //第一个参数:上下文环境
           //第二个参数:当前列表项加载的布局文件
           //第三个参数:数据源
        arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
        //listview视图加载适配器
        listView.setAdapter(arrayAdapter);
        //为列表视图中选中的项添加响应事件
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String result = parent.getItemAtPosition(position).toString();//获取选择项的值
                Toast.makeText(MainActivity.this,"您点击了"+result,Toast.LENGTH_SHORT).show();
            }
        });
    }
}arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
        //listview视图加载适配器
        listView.setAdapter(arrayAdapter);
        //为列表视图中选中的项添加响应事件
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String result = parent.getItemAtPosition(position).toString();//获取选择项的值
                Toast.makeText(MainActivity.this,"您点击了"+result,Toast.LENGTH_SHORT).show();
            }
        });
    }
}

四个参数:自定义了TextView

activity_info布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/tv_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />
</LinearLayout>

activity_list布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/lv_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="@android:color/holo_blue_dark"
        android:dividerHeight="1dp"></ListView>
</LinearLayout>

MainActivity.java:

package com.ied.arrayadapter;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private ArrayAdapter<String> arrayAdapter;
    private ArrayList<String> data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_info);

        listView = (ListView) findViewById(R.id.lv_list);

        initData();//数据源
      //  String data[] = {"1","2","3","4","5","6","7","8","9","10","11","12","13"};

        //创建数组适配器,作为数据源和列表控件联系的桥梁
        arrayAdapter = new ArrayAdapter<String>(this,R.layout.activity_list,R.id.tv_info,data);
        //listview视图加载适配器
        listView.setAdapter(arrayAdapter);
        //为列表视图中选中的项添加响应事件
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String result = parent.getItemAtPosition(position).toString();//获取选择项的值
                Toast.makeText(MainActivity.this,"您点击了"+result,Toast.LENGTH_SHORT).show();

            }
        });
    }
    private void initData(){
        data = new ArrayList<String>();
        for (int i=0;i<13;i++){
            data.add("第"+(i+1)+"行");
        }
    }

}

第三种:自定义ArrayAdapter数组适配器

 

 

 

源代码下载

密码:d4qm

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38225558/article/details/79875632

智能推荐

[Linux] Windows安装Linux子系统教程-程序员宅基地

文章浏览阅读4.3k次,点赞3次,收藏14次。我们想在windows系统中想用linux系统,用的最多的就是虚拟机了吧,今天介绍一种不用装虚拟机在windows也能使用linux系统的一个方法,该方法全程使用命令,但对于常用linux的人来说也不是什么难事,最主要是精简,不用打开虚拟机,非常方便,特此记录一下。_windows安装linux子系统

学习ESP8266②AT指令开发获取网络时间_esp8266wifi模块获取网络时间-程序员宅基地

文章浏览阅读9.3k次,点赞8次,收藏38次。用到的指令介绍 AT+CWMODE 配置wifi模式 AT+CWJAP 连接AP AT+CIPSTART 建立TCP连接 AT+CIPSEND 透传发送数据API接口:http://cgi.im.qq.com/cgi-bin/cgi_svrtime具体过程 先配置WiFi,esp8266连上路由器AT+CWMODE=3AT+CWJAP=&amp;amp;amp;quot;HONOR9&amp;amp;amp;quot;,&amp;amp;amp;quot;12_esp8266wifi模块获取网络时间

C语言程序设计学习笔记第九章结构体_c语言谭浩强第五版宏定义在哪章-程序员宅基地

文章浏览阅读871次。第九章结构体9.1结构体的概念结构体是一种可以由我们自己定义的数据类型#include <stdio.h>struct student{ int num; int score; float average;};int main(void){ //定义变量,存放学生的序号、成绩、平均分 struct student Tom;//Tom是变量,struct student是数据类型 struct student cla_c语言谭浩强第五版宏定义在哪章

sql 血缘解析 calcite_calcite 血缘分析-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏12次。package pers.machi;import com.google.common.base.Joiner;import org.apache.calcite.avatica.util.Casing;import org.apache.calcite.config.Lex;import org.apache.calcite.sql.*;import org.apache.calcite.sql.parser.SqlParseException;import org.apache.calci_calcite 血缘分析

摄像头基础知识介绍_avdd dvdd 对图像信号的影响-程序员宅基地

文章浏览阅读6.4k次,点赞12次,收藏90次。一、摄像头结构和工作原理. 拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中进行处理,最终转换成手机屏幕上能够看到的图像。数字信号处理芯片DSP(DIGITAL SIGNAL PROCESSING)功能:主要是通过一系列复杂的数学算法运算,对数字图像信号参数进行优化处理,并把处理后的信号通过USB等接口传到PC等设备。DSP结构框架:  1. ISP(image signal pro.._avdd dvdd 对图像信号的影响

centos rpm安装mysql5.5_Linux以rpm方式安装Mysql,Centos7通过rpm安装Mysql5.5,Linux Mysql rpm安装...-程序员宅基地

文章浏览阅读137次。Linux以rpm方式安装Mysql,Centos7通过rpm安装Mysql5.5,Linux Mysql rpm安装================================Copyright 蕃薯耀 2020-11-10https://www.cnblogs.com/fanshuyao/一、上传rpm包到Linux服务器,然后进入目录,接着安装rpm -ivh MySQL-server..._package perl-4:5.16.3-293.el7.x86_64 was already added, replacing with perl-

随便推点

byte[]转int-程序员宅基地

文章浏览阅读207次。第一种: /** * 将int数值转换为占四个字节的byte数组,本方法适用于(低位在前,高位在后)的顺序。 和bytesToInt()配套使用 * @param value * 要转换的int值 * @return byte数组 */ pub..._byte转int

基于PHP的图书馆预约选座管理系统设计与实现(源码+lw+部署文档+讲解等)_图书馆座位管理系统-程序员宅基地

文章浏览阅读144次。博主介绍:全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战精彩专栏 推荐订阅2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐Java精品实战案例《500套》微信小程序项目精品案例《500套》文末获取源码+数据库。_图书馆座位管理系统

Vue Docker部署--Dockerfile书写_cloudbuild上vue项目的dockerfile怎么写-程序员宅基地

文章浏览阅读8.4k次。前一阵有一个项目是采用Vue.js作为前端技术栈开发的,在实际部署的时候采用的是Webpack打包,然后用Nginx作为代理服务器,然后采用Daocloud平台,将其作为Docker容器部署。由于后台也是采用Docker部署,所以我们并不知道后台的IP地址,没有办法采用常见的将自己定义的Nginx配置文件default.conf替换默认文件,常见方式的实现是:RUN rm /etc/nginx/c..._cloudbuild上vue项目的dockerfile怎么写

Python中的类变量和实例变量有什么区别?_python中类变量和实例变量的区别-程序员宅基地

文章浏览阅读391次,点赞4次,收藏9次。在Python中,类变量和实例变量是面向对象编程的两个重要概念。它们在定义、存储和访问方式上有很大的不同,这主要源于它们所关联的对象不同:类变量与类本身相关联,而实例变量则与类的实例(或对象)相关联。这个示例清晰地展示了类变量和实例变量在定义、存储、访问和修改方面的区别。理解这些区别对于有效地使用Python进行面向对象编程至关重要。_python中类变量和实例变量的区别

FPS游戏通用准星修正实现自瞄_自瞄的瞄准角度是什么-程序员宅基地

文章浏览阅读1.7w次,点赞6次,收藏43次。FPS游戏内的十字瞄准视角其实就是一个视角摄像机这个应该不难理解吧,如何调整摄像机的视角就要用到一个叫“姿态角(Euler角)”的数据,即: yaw , pitch , roll。这3个值的解释如下:pitch是围绕X轴旋转,也叫做俯仰角yaw是围绕Y轴旋转,也叫偏航角roll是围绕Z轴旋转,也叫翻滚角用张图来解释比较直观:首先我们要先知道自己的Euler角值,然后_自瞄的瞄准角度是什么

java单元测试如何全覆盖_单元测试个人总结 (1)-程序员宅基地

文章浏览阅读871次。2017年12月31日做一次技术总结,人生第一次框架选型:assertJ+Junit+powemockito+mockito+maven/ant/gradle+jacoco+jenkins+sonarqube单元测试中,要测试目标模块的时候比如测试 service 方法的时候,service 方法中我们有可能会去调用数据库的执行结果,会取 redis 中缓存数据,也有可能会使用当前的系统时间,根据..._java 单元测试 接口如何覆盖

推荐文章

热门文章

相关标签