android适配器简析

android中常用的适配器有:ArrayAdapter、SimpleAdapter、SimpleCursorAdapter、BaseAdapter。注意:前3者都是继承于BaseAdapter。


ArrayAdapter:适用于简单文字列表。

SimpleAdapter:适用于图文混搭列表。

SimpleCursorAdapter:适用于数据源是数据库的列表。

BaseAdapter:最灵活的适配器,适用于大多数情况。


一般的适配器使用都需要:1.设置数据源

     2.设置适配器

     3.关联适配器


ArrayAdapter:

定义在string.xml中的数据源。

<resources>
    <string name="app_name">ListviewDemo</string>
    <string-array name="city">
        <item>北京</item>
        <item>上海</item>
        <item>广州</item>
        <item>深圳</item>
        <item>四川</item>
        <item>重庆</item>
    </string-array>
</resources>

也可以直接在Java代码中定义:


        lv=(ListView)findViewById(R.id.lv);

        //准备数据源
        final String[]city=getResources().getStringArray(R.array.city);
        //将数据加载到适配器
        adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,city);

        //将适配器中的数据加载到空控件中
        lv.setAdapter(adapter);
效果图:



SimpleAdapter:


SimpleAdapter:在item中加上图文控件,添加图片资源到drawable中。

实例:

xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="114dp"
        android:layout_height="103dp"
        app:srcCompat="@drawable/ic_launcher1"
        android:id="@+id/imageView" />

    <TextView
        android:text="TextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        android:layout_weight="1"
        android:layout_alignBottom="@+id/imageView"
        android:layout_toRightOf="@+id/imageView"
        android:layout_toEndOf="@+id/imageView"
        android:layout_marginLeft="26dp"
        android:layout_marginStart="26dp"
        android:layout_marginBottom="36dp" />
</RelativeLayout>

Mainactivity:

package com.lee.simpleadapterdemo;

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 {

    private ListView lv;
    private List<Map<String,Object>> list;
    private int images[]={R.drawable.ic_launcher1};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().hide();//隐藏标题栏
        setContentView(R.layout.activity_main);

        lv= (ListView) findViewById(R.id.listview);

        //准备数据源
        list=new ArrayList<Map<String,Object>>();
        for(int i=0;i<8;i++){
            Map<String,Object> map = new HashMap<String,Object>();
            map.put("img",images[0]);
            map.put("text","item"+i);
            list.add(map);
        }

        //将数据源加载到适配器:SimpleAdapter
        /**
         * SimpleAdapter(Context context, List<? extends Map<String, ?>> data,
         @LayoutRes int resource, String[] from, @IdRes int[] to)
         context表示上下文
         data表示加载到适配器的数据源对象
         resource表示adapter空间中的没想布局资源id
         from表示数据源map中key的数组,key表示制定的数值
         to表示需要展示对应数据的资源id
         from→to表示将相应格式的资源展示到对应的控件中
         */

        SimpleAdapter adapter=new SimpleAdapter(MainActivity.this,list,R.layout.list_item,
                                new  String[]{"img","text"},
                                new int[]{R.id.imageView,R.id.textView});

        //关联适配器
        lv.setAdapter(adapter);
    }
}


续。。。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值