019Adapter初解

来源:互联网 发布:模拟炒股软件 知乎 编辑:程序博客网 时间:2024/04/29 21:58

Adapter是什么?

adapter是帮助填充数据的中间桥梁,就是将各种数据以合适的形式显现到view中

MVC是什么

这里写图片描述

适配器概念结构图

这里写图片描述
必须学会的适配器: ListAdapter,SinnerAdapter,BaseAdapter
BaseAdapter:抽象类,实际开发中我们会继承这个类并且重写相关方法,用得最多的一个Adapter!

ArrayAdapter:支持泛型操作,最简单的一个Adapter,只能展现一行文字~
SimpleAdapter:同样具有良好扩展性的一个Adapter,可以自定义多种效果!
SimpleCursorAdapter:用于显示简单文本类型的listView,一般在数据库那里会用到,不过有点过时, 不推荐使用!

ArrayAdapter

方法1
xml文件:
这里写图片描述

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <ListView        android:id="@+id/listView1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/textView1"        android:layout_marginTop="82dp"        android:layout_toRightOf="@+id/textView1" >    </ListView></RelativeLayout>

import java.util.ArrayList;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.Toast;public class MainActivity extends Activity {ListView list1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);String[] str = { "1", "2", "3" };ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, str);// 创建适配器,android.R.layout.simple_list_item_1适配器显示方式,str适配器显示资源list1 = (ListView) findViewById(R.id.listView1);// 获取listview资源list1.setAdapter(adapter);// 连接适配器/* * 创建监听器 */list1.setOnItemClickListener(new ItemClickListener());}class ItemClickListener implements OnItemClickListener {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO 自动生成的方法存根Toast.makeText(MainActivity.this, " 1", Toast.LENGTH_LONG).show();}}}

方法2
1在values中建立arraylist.xml文件
这里写图片描述

<?xml version="1.0" encoding="utf-8"?><resources>     <string-array name="listarray">        <item >1sssssss</item>        <item >2sssssssss</item>        <item >3sssssssssss</item>        </string-array></resources>

2 java代码

package com.example.androidtext001;import android.os.Bundle;import android.app.Activity;import android.widget.ArrayAdapter;import android.widget.ListView;public class MainActivity extends Activity {    // ListView list1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(                MainActivity.this, R.array.listarray,                android.R.layout.simple_list_item_1);        ListView listview = (ListView) findViewById(R.id.listView1);//获取listview  id        listview.setAdapter(adapter);            }}

SimpleAdapter

这里写图片描述

1准备3张图片放入drawable中

2编写列表布局文件
这里写图片描述

<LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"       android:layout_width="fill_parent"       android:layout_height="fill_parent"       android:orientation="horizontal" >       <!-- 定义一个用于显示头像的ImageView -->       <ImageView           android:id="@+id/imageView1"           android:layout_width="wrap_content"           android:layout_height="wrap_content"           android:src="@drawable/ic_launcher" />       <!-- 定义一个竖直方向的LinearLayout,把呢称与说说的文本框设置出来 -->       <LinearLayout           android:layout_width="wrap_content"           android:layout_height="match_parent"           android:orientation="vertical" >           <TextView               android:id="@+id/textView1"               android:layout_width="wrap_content"               android:layout_height="wrap_content"               android:text="1" />           <TextView               android:id="@+id/textView2"               android:layout_width="wrap_content"               android:layout_height="wrap_content"               android:text="1.1" />       </LinearLayout>

3编写主Activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <ListView        android:id="@+id/listView1"        android:layout_width="match_parent"        android:layout_height="wrap_content" >    </ListView></LinearLayout>

4 写java

package com.example.androidtext002;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.media.Image;import android.os.Bundle;import android.R.anim;import android.app.Activity;import android.view.Menu;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.SimpleAdapter;public class MActivity extends Activity {    private String[] name = { "1", "2", "3", "4" };    private String[] say = { "1.1", "1.2", "1.3", "1.4" };    private int[] imageId = { R.drawable.ic_launcher, R.drawable.ic_launcher,            R.drawable.ic_launcher, R.drawable.ic_launcher };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity);        /*         * 创建ArrayList列表,使用for循环将数据加入到列表中         */        List<Map<String, Object>> listItem = new ArrayList<Map<String, Object>>();        for (int i = 0; i < name.length; i++) {            Map<String, Object> showItem = new HashMap<String, Object>();            showItem.put("imageId", imageId[i]);            showItem.put("name", name[i]);            showItem.put("say", say[i]);            listItem.add(showItem);        }        // 创建适配器        SimpleAdapter myAdapter = new SimpleAdapter(MActivity.this, listItem,                R.layout.list_item, new String[] { "name", "say", "imageId" },                new int[] { R.id.textView1, R.id.textView2, R.id.imageView1 });        ListView listView = (ListView) findViewById(R.id.listView1);        listView.setAdapter(myAdapter);    }}
0 0
原创粉丝点击