首页 > 其他分享 >初识ListView

初识ListView

时间:2022-08-23 11:45:25浏览次数:57  
标签:layout example util 初识 import android ListView id

  • BaseAdapter:抽象类,实际开发中我们会继承这个类并且重写相关方法,用得最多的一个Adapter!
  • ArrayAdapter:支持泛型操作,最简单的一个Adapter,只能展现一行文字~
  • SimpleAdapter:同样具有良好扩展性的一个Adapter,可以自定义多种效果

 

今天来简单实现arrayAdapt和SimpleAdapter,记录一下。

关于SimpleAdapter

1:ListView主界面,线性布局

<?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"
android:orientation="vertical"
tools:context=".adapter.ListActivity">

<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="30dp"
android:id="@+id/List_view"
//这里是ArrayList的数据xml部分
android:entries="@array/myarray"/>
</LinearLayout>


item的页面布局部分
<?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 -->
<ImageView
android:id="@+id/imgtou"
android:layout_width="64dp"
android:layout_height="64dp"
android:baselineAlignBottom="true"
android:paddingLeft="8dp" />

<!-- 定义一个竖直方向的LinearLayout,把QQ呢称与说说的文本框设置出来 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:textColor="#1D1D1C"
android:textSize="20sp" />

<TextView
android:id="@+id/says"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="8px"
android:textColor="#B4B4B9"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>

主界面逻辑以及适配器部分
package com.example.example.adapter;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import com.example.example.R;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ListActivity extends AppCompatActivity {
private String[] names = new String[]{"Android", "Java", "C++"};
private String[] says = new String[]{"安卓之家", "面向对象~", "功能强大"};
private int[] imgIds = new int[]{R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round};

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

List<Map<String, Object>> data = new ArrayList<>();
for (int i = 0; i < names.length; i++) {
Map<String, Object> showItem = new HashMap();
showItem.put("image", imgIds[i]);
showItem.put("name", names[i]);
showItem.put("says", says[i]);
data.add(showItem);
}

//创建一个simpleAdapter
SimpleAdapter myAdapter = new SimpleAdapter(getApplicationContext(), data, R.layout.list_item, new String[]{"image", "name", "says"}, new int[]{R.id.image, R.id.name, R.id.says});
ListView listView = (ListView) findViewById(R.id.List_view);
listView.setAdapter(myAdapter);
}
}
运行效果

 

关于ArrayView

view

<?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"
android:orientation="vertical"
tools:context=".adapter.ListActivity">

<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="30dp"
android:id="@+id/List_view"
android:entries="@array/myarray"/>
</LinearLayout>

逻辑部分
package com.example.example.adapter;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import com.example.example.R;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ListActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
List data=new ArrayList();
data.add("太阳");
data.add("月亮");
data.add("星星");
ListView listView=findViewById(R.id.List_view);
ArrayAdapter<String> arrayAdapter=new ArrayAdapter<>(this, android.R.layout.select_dialog_singlechoice,data);
listView.setAdapter(arrayAdapter);
}
}

 

 


数据部分用的list,也可以用字符数组,也可以自己定义资源文件

资源文件的用法,在values目录下创建arrays.xml文件,并在主布局文件的listView下面添加android:entries="@array/myarray"即可。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="myarray">
<item>语文</item>
<item>数学</item>
<item>英语</item>
</string-array>
</resources>

逻辑部分
package com.example.example.adapter;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import com.example.example.R;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ListActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
ListView listView=findViewById(R.id.List_view);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.myarray,android.R.layout.simple_list_item_multiple_choice );
listView.setAdapter(adapter);
}
}

其实就适配器部分和适配器的参数部分发生了改变
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.myarray,android.R.layout.simple_list_item_multiple_choice );
就这一句改变了
运行效果如下:

标签:layout,example,util,初识,import,android,ListView,id
From: https://www.cnblogs.com/smile908/p/16615514.html

相关文章

  • vue3 学习-初识体验-常见指令v-for和v-model
    继续通过小案例来体验一些常用的指令,以经典的todolist进行展示.首先呢通过v-for指令进行dom循环.v-for通常是在循环dom的编写的同时遍历数据进行填充.<!DOCTYPEht......
  • vue3 学习-初识体验-常见指令v-on和v-if
    继续来体验一波数据驱动结合绑定方法的实践案例.这里以最常见的反转字符串为栗子来体验面向数据编程.v-on用来绑定事件的,然后将方法名写在methods中即可.<!DOCTYPE......
  • U8 V13.0小白入门开发记录四-------------------初识自定义按钮开发
    今天是第一次刚接触U8自定按钮开发,本人也是一名小白。网上的资料太少,就连一些开发文档都找不到。通过零零碎碎的测试和调研。发下一些基础并记录在此,如有补充请在下方评论,......
  • 2022-08-15 - 初识MySQL
    MySQL数据库数据库数据库,又称为Database,简称DB。数据库就是一个文件集合。顾名思义:是一个存储数据的仓库,实际上就是一堆文件,这些文件中存储了具有特定格式的数据,可以很......
  • Mysql----初识
    《基本命令》    《连接MYSQL数据库的命令》   《数据库是什么》    ......
  • Javaweb-Cookie初识
    快速了解Cookie什么是Cookie?首先看一下Cookie在目前整个Web技术体系中的位置可以看到它是在浏览器端这边关联服务器端Session会话域的,可以推断它是和Session类似,用来保......
  • mysql初识
    mysql需要了解哪些知识1.sql操作2.索引索引原理索引优化sql语句优化3.事务并发读异常的问题并发死锁怎么解决4.mysql与缓存解决读性能问题集群的内容 OLTP:......
  • 初识多线程
    初始多线程实现多线程的方法继承Thread类(重点)实现Runnavle接口(重点)实现Caliable接口(了解,以后可能会学习到!)多线程分两种进程和线程进程每一个程序都是静态的,当......
  • 初识Linux和安装虚拟机
    1、初识LinuxUNIX是一个计算机操作系统,一个用来协调、管理和控制计算机硬件和软件资源的控制程序。UNIX操作系统的特点:多用户和多任务a)多用户表示在同一时刻可以有多......
  • 初识JAVA
    初识JAVA Java诞生C语言1972年指针,内存管理C++1982年兼容C语言java1995年语法像,无指针内存管理,可移植,高性能版本包含SE标准版(桌面,控制台) 基础ME嵌......