展会信息港展会大全

android之ListView的Adapter使用
来源:互联网   发布日期:2015-11-26 13:40:37   浏览:2052次  

导读:在做一个小练习的时候,又遇到了Adapter,才发现以前没有对它进行过记录现在介绍一下:其实Adapter就是数据和视图之间的桥梁,数据在adapter中做处理,然后显示到ListView...

在做一个小练习的时候,又遇到了Adapter,才发现以前没有对它进行过记录

现在介绍一下:

其实Adapter就是数据和视图之间的桥梁,数据在adapter中做处理,然后显示到ListView上面

Adapter有很多种,有ArrayAdapter<T>, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter,ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter, WrapperListAdapter.

这里就以ArrayAdapter<T>为例来介绍

我自己写的一个例子:

有两个类,一个是主界面Activity,用来处理输入和显示,效果图在最下面,可以翻到最后看一下,布局如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<LinearLayout

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Name:"

/>

<EditText android:id="@+id/name"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

<LinearLayout

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Address:"

/>

<EditText android:id="@+id/addr"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

<Button android:id="@+id/save"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Save"

/>

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<LinearLayout

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Name:"

/>

<EditText android:id="@+id/name"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

<LinearLayout

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Address:"

/>

<EditText android:id="@+id/addr"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

<Button android:id="@+id/save"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Save"

/>

</LinearLayout>java代码如下:

public class LunchList extends Activity {

List<Restaurant> model=new ArrayList<Restaurant>();

ArrayAdapter<Restaurant> adapter=null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Button save=(Button)findViewById(R.id.save);

save.setOnClickListener(onSave);

ListView list=(ListView)findViewById(R.id.restaurants);

adapter=new ArrayAdapter<Restaurant>(this,android.R.layout.simple_list_item_1,model);//这行代码在下面解释

list.setAdapter(adapter);//为ListView设置我们配置好的适配器

}

private View.OnClickListener onSave=new View.OnClickListener() {

public void onClick(View v) {

Restaurant r=new Restaurant();

EditText name=(EditText)findViewById(R.id.name);

EditText address=(EditText)findViewById(R.id.addr);

r.setName(name.getText().toString());

r.setAddress(address.getText().toString());

RadioGroup types=(RadioGroup)findViewById(R.id.types);

switch (types.getCheckedRadioButtonId()) {

case R.id.sit_down:

r.setType("sit_down");

break;

case R.id.take_out:

r.setType("take_out");

break;

case R.id.delivery:

r.setType("delivery");

break;

}

adapter.add(r);//每个增加的条目都会添加到适配器里面

}

};

}

public class LunchList extends Activity {

List<Restaurant> model=new ArrayList<Restaurant>();

ArrayAdapter<Restaurant> adapter=null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Button save=(Button)findViewById(R.id.save);

save.setOnClickListener(onSave);

ListView list=(ListView)findViewById(R.id.restaurants);

adapter=new ArrayAdapter<Restaurant>(this,android.R.layout.simple_list_item_1,model);//这行代码在下面解释

list.setAdapter(adapter);//为ListView设置我们配置好的适配器

}

private View.OnClickListener onSave=new View.OnClickListener() {

public void onClick(View v) {

Restaurant r=new Restaurant();

EditText name=(EditText)findViewById(R.id.name);

EditText address=(EditText)findViewById(R.id.addr);

r.setName(name.getText().toString());

r.setAddress(address.getText().toString());

RadioGroup types=(RadioGroup)findViewById(R.id.types);

switch (types.getCheckedRadioButtonId()) {

case R.id.sit_down:

r.setType("sit_down");

break;

case R.id.take_out:

r.setType("take_out");

break;

case R.id.delivery:

r.setType("delivery");

break;

}

adapter.add(r);//每个增加的条目都会添加到适配器里面

}

};

}

针对上面的进行解释:

1. 适配器的作用是数据和视图之间的桥梁

2. 这个小例子是要显示一个数组,我们就用ArrayAdapter,数组适配器,数据的数据类型<>是Restaurant类型的(下面的定义),数据的数据类型还可以是其他的包括对象类型的

3. adapter=new ArrayAdapter<Restaurant>(this, android.R.layout.simple_list_item_1, model);

这段代码是创建一个数组适配器的代码,里面有三个参数,第一个参数是上下文,就是当前的Activity, 第二个参数是android sdk中自己内置的一个布局,它里面只有一个TextView,这个参数是表明我们数组中每一条数据的布局是这个view,就是将每一条数据都显示在这个view上面;第三个参数就是我们要显示的数据,这个数据是以List<Restaurant>的形式存在的,当然我们在设置的时候这个数组里面还没有数据,数据时候来调用adapter.add(r);加入进去的.

listView会根据这三个参数,遍历adapterData里面的每一条数据,读出一条,显示到第二个参数对应的布局中,这样就形成了我们看到的listView.

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港