ArrayAdapter(数组适配器)

ArrayAdapter只能显示一行文本数据

ArrayAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull T[] objects) {this(context, resource, 0, Arrays.asList(objects))
  • 参数说明:

    1. context上下文对象
    2. 每一个item的样式,(可使用系统提供,也可自定义)
      系统提供的样式如下
      - simple_list_item1:单独的一行文本框
      - simple_list_item2:两个文本框
      - simple_list_item_checked:每项是一个已选中的列表项
      - simple_list_multiple_choice:复选框
      - simple_list_item_single_choice:单选框
    3. 数据源
  • Adapter的使用:

    • 第一种方式

      1.初始化适配器

ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_expandable_list_item1,datas);
  2.绑定适配器
listView.setAdapter(adapter);
  • 第二种方式

在res\value下创建数组资源的xml文件:arrays.xml

获取xml中String数组

 String name[] = getResources().getStringArray(R.array.myArray);

SimpterAdapter【简单适配器】

new SimpleAdapter(MainActivity.this,lists,R.layout.list_item
,new String[]{"image","theme","content"}
,new int[]{R.id.image1,R.id.text1,R.id.text2});

  • 参数说明

    • 1.上下文对象
    • 2.数据源,常是一个含Map的集合
    • 3.item的布局文件
    • 4.new String[]{}数组,与第2个参数中存入的map集合里的key值一一对应
    • new int[],第三个参数中的item里面的控件id
  • 基本案例
<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ListViewandroid:id="@+id/ll1"android:layout_width="match_parent"android:layout_height="wrap_content"></ListView>
</LinearLayout>

item样式

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><ImageViewandroid:id="@+id/image1"android:layout_width="100dp"android:layout_height="100dp"android:src="@mipmap/ic_launcher"android:layout_margin="5dp"/><LinearLayoutandroid:id="@+id/ll2"android:layout_width="match_parent"android:layout_height="100dp"android:orientation="vertical"android:layout_marginTop="5dp"android:layout_marginLeft="10dp"><TextViewandroid:id="@+id/text1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="哈哈"android:textSize="30sp"android:layout_marginTop="10dp"/><TextViewandroid:id="@+id/text2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="哈哈哈哈哈"android:textSize="24dp"android:layout_marginTop="10dp"/></LinearLayout>
</LinearLayout>

Java文件

package com.example.test3;import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class MainActivity extends Activity{
//    这三个经常是同时出现的private List<Map<String,Object>> lists;private SimpleAdapter adapter;private ListView listView;
//    定义数据private String[] theme = {"张三","李四","王五"};private String[] content ={"我是张三,你好","我是李四,你好","我是王五,你好"};private int[] imageViews = {R.mipmap.ic_launcher,R.mipmap.ic_account,R.mipmap.ic_password};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView) findViewById(R.id.ll1);
//        准备数据源lists = new ArrayList<>();for(int i = 0;i < theme.length;i++){Map<String,Object> map =new HashMap<>();map.put("image",imageViews[i]);map.put("theme",theme[i]);map.put("content",content[i]);lists.add(map);}adapter = new SimpleAdapter(MainActivity.this,lists,R.layout.list_item,new String[]{"image","theme","content"},new int[]{R.id.image1,R.id.text1,R.id.text2});listView.setAdapter(adapter);}
}

效果图

BaseAdapter

自定义adapter

package com.example.test3;import android.content.Context;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;import java.util.ArrayList;
import java.util.List;/*** Created by coder-tu on 2016/1/13.*/
public class MyAdapter extends BaseAdapter {private List<Message> Datas;private Context mContext;public MyAdapter(List<Message> datas, Context mContext) {Datas = datas;this.mContext = mContext;}/*** 返回item的个数* @return*/@Overridepublic int getCount() {return Datas.size();}/*** 返回每一个item对象* @param i* @return*/@Overridepublic Object getItem(int i) {return Datas.get(i);}/*** 返回每一个item的id* @param i* @return*/@Overridepublic long getItemId(int i) {return i;}/*** 暂时不做优化处理,后面会专门整理BaseAdapter的优化* @param i* @param view* @param viewGroup* @return*/@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {view = LayoutInflater.from(mContext).inflate(R.layout.list_item,viewGroup,false);ImageView imageView = (ImageView) view.findViewById(R.id.image1);TextView textView1 = (TextView) view.findViewById(R.id.text1);TextView textView2 = (TextView) view.findViewById(R.id.text2);imageView.setImageResource(Datas.get(i).getImageId());textView1.setText(Datas.get(i).getTheme());textView2.setText(Datas.get(i).getContent());
//        此处需要返回view 不能是view中某一个return view;}
}

Java文件

package com.example.test3;import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;import java.util.ArrayList;
import java.util.List;public class MainActivity extends Activity{
//    这三个经常是同时出现的private List<Message> lists;private MyAdapter adapter;private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView) findViewById(R.id.ll1);lists = new ArrayList<>();lists.add(new Message(R.mipmap.ic_launcher,"张三","你好,我是张三"));lists.add(new Message(R.mipmap.ic_account,"李四","你好,我是李四"));lists.add(new Message(R.mipmap.ic_password,"王五","你好,我是王五"));adapter = new MyAdapter(lists,MainActivity.this);listView.setAdapter(adapter);}
}
  • BaseAdapter的优化

转载于:https://www.cnblogs.com/lyszyl/p/10649683.html

(1)Adapter适配器(ArrayAdapter、SimpleAdapter、BaseAdapter)相关推荐

  1. 适配器AdapterView(ArrayAdapter SimpleAdapter BaseAdapter)

    Android中对于适配器的理解: android开发中会大量使用到Listview  而 ListView 需要适配器才能使用,不同场合使用不同的适配器.接了下来 浅谈一下三个常用的适配器,概念及其 ...

  2. [安卓开发] 下拉框Spinner与适配器ArrayAdapter/SimpleAdapter的使用

    目录 简单介绍Spinner和Adapter ArrayAdapter实现以对话框形式展示下拉框(纯文字) Simple实现以对话框形式展示下拉框(图片加文字) 简单介绍Spinner和Adapter ...

  3. ListView 和 Adapter 适配器的简单介绍

    文章目录 1.ListView组件 2.Adapter 适配器 3.ArrayAdapter示例 4.SimpleAdapyer 适配器示例 5.BaseAdapter 适配器示例 主要思路: 1.L ...

  4. Android - Adapter 适配器

    Android 适配器 本文介绍两个Adapter: ArrayAdapter:最简单的Adapter,只能展现一行文字. XML文件: <ListViewandroid:id="@+ ...

  5. ArrayAdapter适配器和SimpleAdapter适配器以及ListView的使用

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 下面通过一个实例演示ArrayAdapter适配器和SimpleAdapter适配器以及ListView的使用 ...

  6. Android中Adapter适配器的介绍以及用法的总结

    Adapter(适配器的讲解) 适配器就我自己来看,我觉得这是一个非常重要的知识点,Adapter是用来帮助填出数据的中间桥梁,简单点说吧:将各种数据以合适的形式显示在View中给用户看.Adapte ...

  7. android中Adapter适配器的讲解

    android中Adapter适配器的讲解 Adapter(适配器的讲解) 适配器就我自己来看,我觉得这是一个非常重要的知识点,Adapter是用来帮助填出数据的中间桥梁,简单点说吧:将各种数据以合适 ...

  8. Adapter适配器与具体应用

    Adapter适配器与具体应用 一.Adapter介绍: 1.Adapter是什么:Adapter适配器是沟通数据与视图的桥梁,用于对要进行显示的数据进行处理, 并通过与视图对象的绑定从而将数据显示到 ...

  9. Android学习——Adapter适配器

    AdapterView: 容器控件,其整体效果由每一个子元素内容决定,子元素的形式由Adapter决定. AdapterView的子视图对象: ListView:以垂直滑动列表形式显示一组数据. Gr ...

最新文章

  1. AX2009报表打印固定长度Barcode条码
  2. 详解进程的虚拟内存,物理内存,共享内存
  3. boost::log模块测试样板,用于检查每个公共标头是否都是独立的并且没有任何缺失的 #includes
  4. 永不示弱_永不过时的网页设计:今天和2000年的在线投资组合
  5. MFC实现图像灰度、采样和量化功能详解
  6. how hurt my eggs are, if two, please deep two.
  7. Python题库(100例)第一天
  8. 分布式机器学习第3章 分布式机器学习框架
  9. 诺基亚N9—刷机教程
  10. 富爸爸实现财务自由七步骤
  11. 同比增长和环比增长的区别
  12. 软件测试人才培养全景图新版本
  13. 课堂活动(调查不同厂家的上网行为管理软件设备,列举每款软件的名称,主要功能,并简要说明上网行为管理类的软件及设备原理。)
  14. node.js 模块的安装卸载与导入机制
  15. appdata是什么文件夹?appdata文件夹可以删除吗?
  16. android 9 申请动态权限android.permission.WRITE_EXTERNAL_STORAGE 允许后应用闪退
  17. error: variable '__this_module' has initializer but incomplete type错误解决
  18. Linux / Windows系统中安装最新版 ElasticSearch (es)搜索引擎 超详细图文教程【一看就懂】
  19. 「nature protocols」组学数据的通路富集分析和可视化: g:Profiler, GSEA, Cytoscape 和 EnrichmentMap...
  20. about unit test in android ppt,选修5 unit4Learning about language.ppt

热门文章

  1. 手撸一个JdbcTemplate,带你了解其原理
  2. tf.get_variable
  3. pytorch nn.Embedding
  4. 华为+长安研发芯片?长安蔚来更名“阿维塔科技”
  5. nvGRAPH API参考分析(一)
  6. deepstream-开放式实时服务器
  7. 科技公司重新关注2级以上驾驶员辅助
  8. 无监督域对抗算法:ICCV2019论文解析
  9. [JAVA EE] JPA 查询用法:自定义查询,分页查询
  10. setTimeout、setInterval、promise、async/await的顺序详解(多种情况,非常详细~)