zoukankan      html  css  js  c++  java
  • ArrayAdapter与SimpleAdapter的使用

    在使用ListView中我们使用到adapter,android中为我们不仅提供了BaseAdapter类来让我们自定义自己的Adapter,还为我们提供了ArrayAdapter以及SimpleAdapter。现在让我们简述一下,这两个类的使用方法。

    package xidian.dy.com.chujia;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    
    
    public class MainActivity extends AppCompatActivity {
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ListView lv = (ListView) findViewById(R.id.lv);
            String[] str = new String[]{"fdfas", "fdsf", "fafda"};
            if(lv != null)
                lv.setAdapter(new ArrayAdapter<String>(this, R.layout.item_list, R.id.dog, str));
        }
    }

     ArrayAdapter第一个参数是上下文,一般都是this来指定当前的activity,第二个参数是子布局文件,将来要放到ListView中,第三个是子布局文件中需要填充的对象ID,第四个是填充的值,类型为数组。先看一下子布局文件。

    • item_list.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        tools:context="xidian.dy.com.chujia.MainActivity">
    
        <ImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/dog"
            />
        <TextView
            android:id="@+id/dog"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="小狗"
            android:textSize="30sp"
            android:layout_gravity="center_vertical"
            />
    </LinearLayout>

    R.id.dog就是子布局文件中的TextView的id,ArrayAdapter没生成一个子布局对象后,会从str中取一个值出来,将其填充到TextView中。然后将生成的View对象交给ListView来显示。ArrayAdapter只能处理一种数据类型,这里的泛型指定的是String类,所以其第四个参数只能传入String数组。

    SimpleAdapter


    SimpleAdaptern能够处理多种数据,其用法和ArrayAdapter很相似。

    package xidian.dy.com.chujia;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    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 AppCompatActivity {
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ListView lv = (ListView) findViewById(R.id.lv);
            List<Map<String, Object>> data = new ArrayList<>();
            Map<String, Object> m1 = new HashMap<>();
            m1.put("phone", R.drawable.dog);
            m1.put("name", "one");
            data.add(m1);
    
            Map<String, Object> m2 = new HashMap<>();
            m2.put("phone", R.drawable.dog1);
            m2.put("name", "two");
            data.add(m2);
    
            Map<String, Object> m3 = new HashMap<>();
            m3.put("phone", R.drawable.dog2);
            m3.put("name", "three");
            data.add(m3);
            if(lv != null)
               lv.setAdapter(new SimpleAdapter(this, data, R.layout.item_list, new String[]{"phone", "name"}, new int[]{R.id.phone, R.id.name}));
        }
    }

    布局文件中有一个ImageView和一个TextView,我们一张图和一个字符串放到一个Map中,然后将多个Map放到一个List中。将List传递给SimpleAdapter。第三个参数和第四个参数的含义是,从Map中取出phone放到布局中的R.id.phone中,将name放到R.id.name中。

  • 相关阅读:
    linux学习17 运维核心技能-Linux系统下用户权限管理
    linux学习16 Linux用户和组管理命令演练和实战应用
    linux学习15 Linux系统用户和组全面讲解
    linux学习14 Linux运维高级系统应用-glob通配及IO重定向
    linux学习13 Linux运维常用文件管理命令及系统变量基础
    linux学习12 bash的常见特性及文本查看命令实战
    linux学习11 Linux基础命令及命令历史
    linux学习10 Linux目录结构和根文件系统全面讲解
    【Hadoop离线基础总结】Hive调优手段
    【Hadoop离线基础总结】Hive的基本操作
  • 原文地址:https://www.cnblogs.com/xidongyu/p/5601706.html
Copyright © 2011-2022 走看看