• 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中。

  • 相关阅读:
    13.kubernetes之pv,pvc,configmap(带补充实例)
    1.docker 数据卷的备份和恢复(非大数据量)
    mysql基础 事务的认识和使用
    jdbc基础 (四) 批处理
    jdbc基础 (三) 大文本、二进制数据处理
    mysql使用基础 sql语句(一)
    linux下安装openssh-server
    jdbc基础 (二) 通过properties配置文件连接数据库
    jdbc基础 (一) MySQL的简单使用
    windows API 开发飞机订票系统 图形化界面 (四)
  • 原文地址:https://www.cnblogs.com/xidongyu/p/5601706.html
Copyright © 2020-2023  润新知