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

转载于:https://www.cnblogs.com/xidongyu/p/5601706.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Android Studio中,ArrayAdapterSimpleAdapter都是常用的适配器类,用于将数据源与UI控件进行绑定。下面我来分别介绍一下这两个适配器类的使用方法。 ### ArrayAdapter ArrayAdapter是一个简单的适配器,它可以将一个数组或List中的数据与ListView等UI控件进行绑定。使用ArrayAdapter时,需要创建一个包含数据的数组或List,并将其传入ArrayAdapter的构造函数中,然后将ArrayAdapter设置到对应的UI控件中即可。 下面是一个简单的使用ArrayAdapter的示例代码: ```java String[] data = {"apple", "banana", "orange", "pear"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data); ListView listView = (ListView) findViewById(R.id.list_view); listView.setAdapter(adapter); ``` 在上面的代码中,我们创建了一个包含4个字符串的数组data,然后将其传入ArrayAdapter的构造函数中,同时指定了一个简单的ListView的布局文件`android.R.layout.simple_list_item_1`,最后将ArrayAdapter设置到ListView中。 ### SimpleAdapter SimpleAdapter是一个稍微复杂一些的适配器,它可以将一个List中的Map与ListView等UI控件进行绑定。使用SimpleAdapter时,需要创建一个包含多个Map的List,并将其传入SimpleAdapter的构造函数中,然后将SimpleAdapter设置到对应的UI控件中即可。 下面是一个简单的使用SimpleAdapter的示例代码: ```java List<Map<String, Object>> data = new ArrayList<Map<String, Object>>(); Map<String, Object> map1 = new HashMap<String, Object>(); map1.put("name", "apple"); map1.put("image", R.drawable.apple); data.add(map1); Map<String, Object> map2 = new HashMap<String, Object>(); map2.put("name", "banana"); map2.put("image", R.drawable.banana); data.add(map2); Map<String, Object> map3 = new HashMap<String, Object>(); map3.put("name", "orange"); map3.put("image", R.drawable.orange); data.add(map3); Map<String, Object> map4 = new HashMap<String, Object>(); map4.put("name", "pear"); map4.put("image", R.drawable.pear); data.add(map4); SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item_simple_adapter, new String[]{"name", "image"}, new int[]{R.id.tv_name, R.id.iv_image}); ListView listView = (ListView) findViewById(R.id.list_view); listView.setAdapter(adapter); ``` 在上面的代码中,我们创建了一个包含4个Map的List,每个Map包含两个键值对(name和image),分别对应水果的名称和图片资源的ID。然后将List传入SimpleAdapter的构造函数中,同时指定了一个ListView的布局文件`R.layout.item_simple_adapter`,以及将name和image映射到ListView的两个控件(tv_name和iv_image)上。 总的来说,ArrayAdapterSimpleAdapter都是非常实用的适配器类,用于将数据源与UI控件进行绑定。在实际开发中,我们可以根据具体的需求来选择使用哪个适配器类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值