• Android学习之适配器ArrayAdapter SimpleAdapter


            Adapter是个什么角色呢?其实它的作用就是View界面和数据之间的桥梁。我们可以看作是界面数据绑定的一种理解,它所操纵的数据一般都是一些比较复杂的数据,如数组,链表,数据库,集合等。

    常用的适配器有:

    (1)ArrayAdapter;             数组作为数据源,填充的是ArrayAdapter   

    (2)SimpleAdapter;           List作为数据源,填充的是SimpleAdapter

    (3)SimpleCursorAdapter; 数据来源一般都是数据库查询得到的Cursor

    (4)自定义适配器;               为什么要定义自己的适配器呢?原因就在于,当我们想用一些其它的展现方式,或者是我们需要的,呈现方式,这是就得DIY了。首先我们定义一个类让它继承自BaseAdapter,再让它实现一里面所说的那几个方法。那么这个自定义适配器就算好了。

    下面我们看个实例就明白了:

    一 .ArrayAdapter

    1.xml代码:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="fill_parent"
     5     android:orientation="vertical" >
     6 
     7     <ListView
     8         android:id="@+id/myArrayList"
     9         android:layout_width="match_parent"
    10         android:layout_height="wrap_content" />
    11 
    12 </LinearLayout>

    2.java代码:

     1 package com.example.arrayadapter;
     2 
     3 import java.util.ArrayList;
     4 import android.app.Activity;
     5 import android.os.Bundle;
     6 import android.widget.ArrayAdapter;
     7 import android.widget.ListView;
     8 
     9 public class MainActivity extends Activity {
    10     private ListView mListView;
    11     private ArrayList<String> mArrayList = null;
    12 
    13     @Override
    14     protected void onCreate(Bundle savedInstanceState) {
    15         super.onCreate(savedInstanceState);
    16         setContentView(R.layout.activity_main);
    17         mListView = (ListView) findViewById(R.id.myArrayList);
    18         mListView.setAdapter(new ArrayAdapter<String>(this,
    19                 android.R.layout.simple_expandable_list_item_1, getData()));
    20     }
    21 
    22     private ArrayList<String> getData() {
    23         mArrayList = new ArrayList<String>();
    24         mArrayList.add("item1");
    25         mArrayList.add("item2");
    26         mArrayList.add("item3");
    27         mArrayList.add("item4");
    28         mArrayList.add("item5");
    29         mArrayList.add("item6");
    30         mArrayList.add("item7");
    31         mArrayList.add("item8");
    32         mArrayList.add("item9");
    33         mArrayList.add("item10");
    34         return mArrayList;
    35     }
    36 }

    3.效果图:

    二.SimpleAdapter
     simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)等等。下面的代码都直接继承了ListActivity,ListActivity和普通的Activity没有太大的差别,不同就是对显示ListView做了许多优化,方面显示而已。

    1.XML代码:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="fill_parent"
     4     android:layout_height="fill_parent"
     5     android:orientation="horizontal" >
     6 
     7     <ImageView
     8         android:id="@+id/img"
     9         android:layout_width="wrap_content"
    10         android:layout_height="wrap_content"
    11         android:layout_margin="5px" />
    12 
    13     <LinearLayout
    14         android:layout_width="wrap_content"
    15         android:layout_height="wrap_content"
    16         android:orientation="vertical" >
    17 
    18         <TextView
    19             android:id="@+id/title"
    20             android:layout_width="wrap_content"
    21             android:layout_height="wrap_content"
    22             android:textSize="30px" />
    23 
    24         <TextView
    25             android:id="@+id/content"
    26             android:layout_width="wrap_content"
    27             android:layout_height="wrap_content"
    28             android:textSize="20px" />
    29     </LinearLayout>
    30 
    31 </LinearLayout>

    2.java代码:

     1 package com.example.simpleadapter;
     2 
     3 import java.util.ArrayList;
     4 import java.util.HashMap;
     5 import java.util.List;
     6 import java.util.Map;
     7 import android.app.ListActivity;
     8 import android.os.Bundle;
     9 import android.widget.SimpleAdapter;
    10 
    11 public class MainActivity extends ListActivity {
    12     @Override
    13     public void onCreate(Bundle savedInstanceState) {
    14         super.onCreate(savedInstanceState);
    15         SimpleAdapter adapter = new SimpleAdapter(this, getData(),
    16                 R.layout.simple, new String[] { "title", "content", "img" },
    17                 new int[] { R.id.title, R.id.content, R.id.img });
    18         setListAdapter(adapter);
    19     }
    20 
    21     private List<Map<String, Object>> getData() {
    22         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    23         Map<String, Object> map = new HashMap<String, Object>();
    24         map.put("title", "SimpleAdapter");
    25         map.put("content",
    26                 "SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法");
    27         map.put("img", R.drawable.m4);
    28         list.add(map);
    29 
    30         map = new HashMap<String, Object>();
    31         map.put("title", "SimpleAdapter");
    32         map.put("content",
    33                 "SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法");
    34         map.put("img", R.drawable.m4);
    35         list.add(map);
    36 
    37         map = new HashMap<String, Object>();
    38         map.put("title", "SimpleAdapter");
    39         map.put("content",
    40                 "SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法");
    41         map.put("img", R.drawable.m4);
    42         list.add(map);
    43 
    44         map = new HashMap<String, Object>();
    45         map.put("title", "SimpleAdapter");
    46         map.put("content",
    47                 "SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法");
    48         map.put("img", R.drawable.m4);
    49         list.add(map);
    50 
    51         return list;
    52     }
    53 }

    3.效果图:

    由于写在一个页面感觉太长了,所以下一篇继续总结SimpleCursorAdapter和自定义适配器~~~~~~~~~

  • 相关阅读:
    python机器学习:推荐系统实现(以矩阵分解来协同过滤)
    使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM
    R语言中小样本违反异方差性的线性回归
    R语言基于协方差的结构方程拟合的卡方检验
    R语言异方差回归模型建模:用误差方差解释异方差
    R语言中的生存分析Survival analysis晚期肺癌患者4例
    python列表的方法(改变原列表)
    python修改列表
    python列表的 + 、* 、in 、 not in 、 len() 、 max() 、 min()
    python切片(获取一个子列表(数组))
  • 原文地址:https://www.cnblogs.com/summers/p/4090031.html
Copyright © 2020-2023  润新知