您的位置:首页 > 其它

019Adapter初解

2016-02-21 12:04 309 查看

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;

@Override
protected 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 {

@Override
public 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 = ArrayAdapt
4000
er.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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mvc 数据