定制ListView的界面(使用自定义的列表项布局,一边显示水果图片,一边显示水果文字)以及ListView的点击事件

Android ListView与SQLite综合使用(水果商品展示案例) 首先,看一下主页面。 做一个类似这样的页面,点击+号,输入商品名称,金额,商品就会显示在下面的ListView上,数据是从数据库中获取的。1、我们先把页面做好。<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas 阅读详情

只能显示一段文本的ListView实在是太过单调,我们现在就来对ListView的界面进行定制,让它可以显示更加丰富的内容。

首先,我们需要准备好一组水果图片,分别对应上面提供的每一种水果,待会我们要让这些水果名称的旁边都有一个图样。

 

接着定义一个实体类,作为ListView适配器的适配类型。新建类Fruit,代码如下:

package com.example.administrator.activitydemo;

public class Fruit {

    private String name;

    private int imageId;

    public Fruit(String name, int imageId) {
        this.name = name;
        this.imageId = imageId;
    }

    public String getName() {
        return name;
    }

    public int getImageId() {
        return imageId;
    }
}

Fruit类中只有两个字段,name表示水果的名字,imageId表示水果对应图片的资源id。

然后需要为ListView的子项指定一个我们自定义的布局,在layout目录下新建fruit_item.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="wrap_content">

    <ImageView
        android:id="@+id/iv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="10dp" />
    
</LinearLayout>

在这个布局中,我们定义了一个ImageView用于显示水果的图片,又定义了一个TextView用于显示水果的名称,并让TextView在垂直方向上居中显示。

接下来需要创建一个自定义的适配器,这个适配器继承自ArrayAdapter,并将泛型指定为Fruit类。新建FruitAdapter,代码如下所示:

package com.example.administrator.activitydemo;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

public class FruitAdapter extends ArrayAdapter<Fruit> {

    private int resourceId;
    private List<Fruit> list;

    public FruitAdapter(Context context, int textViewResourceId, List<Fruit> list) {
        super(context, textViewResourceId, list);
        this.resourceId = textViewResourceId;
        this.list = list;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Fruit fruit = list.get(position);//获取当前项的Fruit实例
        View view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false);
        ImageView iv_name = (ImageView) view.findViewById(R.id.iv_name);//初始化图片
        TextView tv_name = (TextView) view.findViewById(R.id.tv_name);//初始化文字
        iv_name.setImageResource(fruit.getImageId());//为ImageView设置图片
        tv_name.setText("" + fruit.getName());//为TextView设置文字
        return view;
    }
}

FruitAdapter重写了父类的一组构造函数,用于将上下文、ListView子项布局的id和数据都传递进来。另外又重写了getView()方法,这个方法在每个子项被滚动到屏幕内的时候会被调用。在getView()方法中,首先通过get()方法获得到当前项的Fruit实例,然后使用LayoutInflater来为这个子项加载我们传入的布局。

MainActivity.java代码:

package com.example.administrator.activitydemo;

import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

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

public class MainActivity extends AppCompatActivity {
    private ListView listView;
    private String[] data = {"Apple", "Banana", "Orange", "Watermelon",
            "Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango",
            "Apple", "Banana", "Orange", "Watermelon",
            "Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango"
    };
    private int[] res = {R.drawable.apple, R.drawable.banana, R.drawable.orange, R.drawable.watermelon,
            R.drawable.pear, R.drawable.grape, R.drawable.pineapple, R.drawable.strawberry, R.drawable.cherry, R.drawable.mango,
            R.drawable.apple, R.drawable.banana, R.drawable.orange, R.drawable.watermelon,
            R.drawable.pear, R.drawable.grape, R.drawable.pineapple, R.drawable.strawberry, R.drawable.cherry, R.drawable.mango};
    private List<Fruit> fruitList;


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();//初始化UI控件
        initData();//初始化数据
    }


    private void initView() {
        listView = (ListView) findViewById(R.id.listView);
    }

    private void initData() {
        initFruits();//初始化水果数据
        FruitAdapter adapter = new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitList);
        listView.setAdapter(adapter);
    }

    private void initFruits() {
        fruitList = new ArrayList<>();
        for (int i = 0; i < data.length; i++) {
            Fruit fruit = new Fruit(data[i], res[i]);
            fruitList.add(fruit);
        }
    }


}


运行程序,效果图:

是不是稍微好看了一点。

ListView的点击事件:

修改MainActivity.java中的代码:

package com.example.administrator.activitydemo;

import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

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

public class MainActivity extends AppCompatActivity {
    private ListView listView;
    private String[] data = {"Apple", "Banana", "Orange", "Watermelon",
            "Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango",
            "Apple", "Banana", "Orange", "Watermelon",
            "Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango"
    };
    private int[] res = {R.drawable.apple, R.drawable.banana, R.drawable.orange, R.drawable.watermelon,
            R.drawable.pear, R.drawable.grape, R.drawable.pineapple, R.drawable.strawberry, R.drawable.cherry, R.drawable.mango,
            R.drawable.apple, R.drawable.banana, R.drawable.orange, R.drawable.watermelon,
            R.drawable.pear, R.drawable.grape, R.drawable.pineapple, R.drawable.strawberry, R.drawable.cherry, R.drawable.mango};
    private List<Fruit> fruitList;


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();//初始化UI控件
        initData();//初始化数据
    }


    private void initView() {
        listView = (ListView) findViewById(R.id.listView);
    }

    private void initData() {
        initFruits();//初始化水果数据
        FruitAdapter adapter = new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitList);
        listView.setAdapter(adapter);
    }

    private void initFruits() {
        fruitList = new ArrayList<>();
        for (int i = 0; i < data.length; i++) {
            Fruit fruit = new Fruit(data[i], res[i]);
            fruitList.add(fruit);
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Fruit fruit = fruitList.get(position);
                Toast.makeText(MainActivity.this, "" + fruit.getName(), Toast.LENGTH_SHORT).show();
            }
        });
    }
}


效果图:

《第一行代码》ListView控件使用 ListView的简单使用 阅读详情

相关推荐

androidstudiolistproject:使用列表视图列出不同的水果,然后在每个水果上单击以加载图像(Java)

androidstudiolistproject

ListView常用拓展(Android群英传)

内容是博主照着书敲出来的,博主码字挺辛苦的,转载请注明出处,后序内容陆续会码出。  ListView虽然使用广泛,但系统原生的ListView显然是不能满足用户在审美、功能上不断提高的需求。不过也不要紧,Android完全可以定制化,让我们非常方便地对原生ListView进行拓展、修改。于是,在开发者的创新下,ListView越来越丰富多彩,各种各样的基于原生ListView的拓展让人目不暇接。下面

Blankj 1068

RecyclerView实现常见的列表菜单

在很多地方我们都会用到纵向列表样式的菜单,比如微信首页的我、发现页面,微博的首页的我页面,QQ的动态页面等等等等,大多数的应用中都会存在这样的页面。我们怎样实现这种页面比较好呢? 布局方案 完成这样的页面,常见的布局方案有: 1. 用ScrollView+LinearLayout很容易的暴力布局出来,但是这样得到的布局太固定了,如果条目多一点,加载起来很耗时。 2. 用ListView来实现,这种方案比方案一要好上不少,起码数据多点的时候,加载时不会太耗时。但是分割线和中间空白在要求差异化的时候,不太好绘制,用View的话又觉得大材小用。 3. 用RecyclerView来实现。Recy

Android eclipse实现创建水果表并添加信息,将其以ListView控件显示

安卓eclipse实现创建水果表并添加信息,将其以ListView控件显示

z2121_的博客 4261

大模型微调框架之TRL

近年来,大语言模型(LLMs)的快速发展推动了下游应用的繁荣,但如何高效地对这些模型进行对齐和微调,依然是研究与应用的热点。Hugging Face 开源的 TRL(Transformer Reinforcement Learning) 框架,提供了基于强化学习的语言模型训练方法,并支持 SFT(监督微调)、PPO(近端策略优化)、DPO(直接偏好优化)等多种方式,是目前对齐和微调 LLM 的重要工具。

和大家一起涨芝士 904

抖音Web端私信Protobuf逆向解析实战

本文详细解析了抖音Web端私信通信的逆向过程,发现其核心采用WebSocket传输Protobuf序列化数据。通过抓包获取二进制样本,利用protoc工具进行原始解码,并逐步推导和编写出对应的.proto协议定义文件,最终实现模拟消息的编码与解码,为理解私有协议逆向提供了完整实战案例。

water的专栏 760

Android Studio用法之ListView(图文并茂的listview界面)

首先准备好一组图片,分别对应列表中的每一种水果,待会我们要让这些水果的旁边都有一个图样。 接着我们定义一个实体类,作为ListView适配类型,新建Fruit,代码如下: package com.android.uilayouttest; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; publi...

qq_24883353的博客 1万+

混沌系统在图像加密中的应用(随机性测试之FIPS 140-2测试和SP800-22测试)

本节内容我们将学习混沌序列的随机性测试,那么前面讲了,混沌系统产生的随机序列,它的随机性到底好不好,除了看相图、分岔图、指数图以外,还有一个非常重要的指标,那就是FIPS 140-2测试和SP800-22测试。(1)保证密码学模块的安全性:密码学模块在加密和解密敏感信息时使用随机数生成器来增加对手动解密和猜测攻击的抵抗力。通过进行FIPS 140-2测试,可以验证密码学模块是否符合安全标准,确保其实施和设计的安全性,以有效地保护敏感信息。

weixin_42207434的博客 2085

java listview用法_Android—— ListView 的简单用法及定制ListView界面

一、ListView的简单用法2. 训练目标1) 掌握 ListView 控件的使用2) 掌握 Adapter 桥梁的作用实现步骤:1)首先新建一个项目, 并让ADT 自动帮我们创建好活动。然后修改activity_main.xml 中的代码,如下所示:xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_m...

weixin_31591011的博客 382

手把手教你用Python实现双三次插值(附OpenCV对比测试)

本文深入解析了双三次插值算法的数学原理,并提供了从零开始的Python实现教程。通过与OpenCV官方实现的对比测试,详细评估了不同插值算法(包括最邻近差值、双线性插值)在图像质量与计算性能上的差异,帮助开发者掌握高质量图像缩放的核心技术。

weixin_29310605的博客 293

从零到一:Bioconductor新手入门与R包安装实战

本文详细介绍了Bioconductor在生物信息学中的重要性及其R包安装实战指南。从环境准备到BiocManager的使用,再到常见问题排查,帮助新手快速掌握这一强大工具。特别推荐org.Hs.eg.db等核心工具包,助力基因注释和功能分析,提升研究效率。

weixin_29061041的博客 418

安卓滚动控件(ListView)基本介绍和用法

安卓滚动控件(ListView)基本介绍和用法

qq_65337539的博客 3385

保姆级教程:在Win10/Win11上搞定AppScan 10.0.0安装与许可证激活(含常见报错解决)

本文提供AppScan 10.0.0在Win10/Win11上的详细安装与许可证激活指南,涵盖环境准备、分步安装、文件替换技巧及常见报错解决方案。通过专业的安全测试工具部署实践,帮助用户高效完成安装并避免常见陷阱,提升Web应用安全扫描效率。

weixin_30800987的博客 424

Android控件之ListView+Adapter

FruitAdapter重写了父类的一组构造函数,用于将上下文、ListView子项布局的id和数据都传递进来。另外又重写了getView()方法,这个方法在每个子项被滚动到屏幕内的时候会被调用。在getView()方法中,首先通过getItem()方法得到当前项的Fruit实例,然后使用LayoutInflater来为这个子项加载我们传入的布局。关于LayoutInflater代码的详细解释如下,我们通过LayoutInflater的from()方法可以构建出一个LayoutInflater对象,然后调用

weixin_57244464的博客 2064

【YOLO11改进 - C3k2融合】C3k2融合DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测

【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1054

CosyVoice语音合成使用教程

CosyVoice是一款开源的语音合成工具,它基于深度学习模型,能够生成高度逼真的语音内容。该工具支持多种语言的语音生成,包括中文、英文、日文、粤语和韩语。CosyVoice的亮点在于它对生成语音情感和韵律的精细控制,通过富文本或自然语言输入,可以显著提升合成语音的情感表达能力。CosyVoice提供了多种预训练模型,用户可以根据需求选择合适的模型。:基底模型,适用于一般语音合成任务。:经过SFT微调的模型,适用于特定音色和情感的语音合成。:支持Instruct微调的模型,适用于自然语言控制的语音合成。

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 4442

android listview参数,Android的ListView使用

ListViewListView 简单用法width和height是match_parent数据可以从数据库,网上下载.也可以是数组数组中的数据是 无法直接传递给ListView的,要借助适配器,其中ArrayAdapter最好用ArrayAdapter可以用泛型指定数据类型,在构造函数中吧要适配的数据传入ArrayAdapter有多个构造函数重载,要选择最适合的一种.因为传入数据是字符串,所以A...

weixin_42360977的博客 154

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

几分钟实现ListView加载图片数据的功能

ListView的简单使用前言一、ListView是什么?二、使用方法方法1:在布局文件中添加一个列表视图,并通过数组资源为其设置列表项。效果图:方法2:使用Adapter为ListView指定要显示的列表项。效果图: 前言 手机屏幕空间有限,能显示的内容不多。可以借助ListView来显示更多的内容。 ListView允许用户通过上下滑动来将屏幕外的数据滚动到屏幕内,同时屏幕内原有的数据滚动出屏幕,从而显示更多的数据内容。 一、ListView是什么? 一个数据控件,可以展示数据。 二、使用方法 方法

葫芦娃的博客 1018

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android listview方法,Android ListView的使用

一丶简单用法布局文件中增加 ListView源码中准备数据源码中构造适配器 Adapter通过 id 找到 ListView 的实例ListView 设置适配器tip:使用android框架提供的子项布局首先新建项目 :例如 : ListViewActivity,修改布局文件Listview,线性布局嵌套一个 ListView:< ListViewandroid:layout_width=...

weixin_34308792的博客 216

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android--ListView的使用

ListView的简单使用 使用ListView展示一些水果名称 首先设计布局:修改activity_main.xml中的代码,在布局中添加ListView控件将其id指定为list_view: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://sc

weixin_56504344的博客 439

android:定制 ListView 的界面

只能显示一段文本的 ListView 实在是太单调了,我们现在就来对 ListView 的界面进行 定制,让它可以显示更加丰富的内容。 首先需要准备好一组图片,分别对应上面提供的每一种水果,待会我们要让这些水果名 称的旁边都有一个图样。 接着定义一个实体类,作为 ListView 适配器的适配类型。新建类 Fruit,代码如下所示: public class Fruit ...

weixin_30919571的博客 96

Listview的自定义界面的使用

listview的使用在这里就不说了,直接说listview定制界面的使用。 1.定义一个实体类,作为listview的适配器的适配类型 新建类Fruit,代码如下: public class Fruit { private String name; private int imageId; //图片id public Fruit(String name,

Saser_的博客 2194

Android ListView用法

ListView 用法 ListView用于将数据展示为一个列表,常用于显示通讯消息,用处较为广泛 用ListView展示水果 创建一个fruit_item.xml用来动态加载布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

叶上初阳_285557的博客 1130

Android(定制的ListView的界面)

1、运行时效果图: 2、Fruit.java(实体类)//定义了一个水果的实类 public class Fruit { private int imageView; private String textView; public Fruit(int imageView, String textView) { this.imageView = image

只想离想象更近一点 5万+

Android ListView 代码1

目录ListView效果一、ListView的简单用法二、定制ListView的界面目标步骤1.定义一个实体类作为ListView适配器的适配对象。2.为ListView的子项指定我们的自定义布局3.创建自定义适配器,这个适配器继承自ArrayAdapter,并将泛型指定为Fruit类4.调用View的findViewById()获取ImageView和TextView的实例,设置图片和...

qq_44711190的博客 608
上一篇: ListView控件的基本使用(方式一:使用ArrayAdapter适配器实现)
下一篇: 提升ListView的运行效率
Android_牧
博客等级 码龄9年 88粉丝 45原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值