`
zhubin215130
  • 浏览: 142384 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】ArrayAdapter和SimpleCursorAdapter例子

阅读更多

    使用ArrayAdapter定制To-Do List

     

    这个例子将扩展To-Do List工程,以一个ToDoItem对象来储存每一个项目,包含每个项目的创建日期。

     

    你将扩展ArrayAdapter类来绑定一组ToDoItem对象到ListView上,并定制用于显示每一个ListView项目的layout

     

    1. 返回到To-Do List工程。创建一个新的ToDoItem类来保存任务和任务的创建日期。重写toString方法来返回一个项目数据的概要。

     

package com.paad.todolist;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class ToDoItem {
String task;
Date created;
 
public String getTask() {
return task;
}
 
public Date getCreated() {
return created;
}
 
public ToDoItem(String _task) {
this(_task, new Date(java.lang.System.currentTimeMillis()));
}
 
public ToDoItem(String _task, Date _created) {
task = _task;
created = _created;
}
 
@Override
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yy”);
String dateString = sdf.format(created);
return “(“ + dateString + “) “ + task;
}
}
 

 

2. 打开ToDoList Activity,修改ArrayListArrayAdapter变量的类型,储存ToDoItem对象而不是字符串。然后,你将修改onCreate方法来更新相应的变量初始化。你还需要更新onKeyListener处理函数来支持ToDoItem对象。

 

private ArrayList<ToDoItem> todoItems;
private ListView myListView;
private EditText myEditText;
private ArrayAdapter<ToDoItem> aa;
 
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
 
// Inflate your view
setContentView(R.layout.main);
 
// Get references to UI widgets
myListView = (ListView)findViewById(R.id.myListView);
myEditText = (EditText)findViewById(R.id.myEditText);
todoItems = new ArrayList<ToDoItem>();
int resID = R.layout.todolist_item;
aa = new ArrayAdapter<ToDoItem>(this, resID, todoItems);
myListView.setAdapter(aa);
myEditText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN)
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
{
ToDoItem newItem;
newItem = new ToDoItem(myEditText.getText().toString());
todoItems.add(0, newItem);
myEditText.setText(“”);
aa.notifyDataSetChanged();
cancelAdd();
return true;
}
return false;
}
});
registerForContextMenu(myListView);
}
 

 

3. 如果你运行Activity,它将显示每个to-do项目,如图5-3所示。

 

5-3

 

4. 现在,你可以创建一个自定义的layout来显示每一个to-do项目。修改在第4章中创建的自定义layout,包含另外一个TextView,它将用于显示每个to-do项目的创建日期。

 

<?xml version=”1.0” encoding=”utf-8”?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”@color/notepad_paper”>
<TextView
android:id=”@+id/rowDate”
android:layout_width=”wrap_content”
android:layout_height=”fill_parent”
android:padding=”10dp”
android:scrollbars=”vertical”
android:fadingEdge=”vertical”
android:textColor=”@color/notepad_text”
android:layout_alignParentRight=”true”
/>
<TextView
android:id=”@+id/row”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:padding=”10dp”
android:scrollbars=”vertical”
android:fadingEdge=”vertical”
android:textColor=”@color/notepad_text”
android:layout_alignParentLeft=”@+id/rowDate”
/>
</RelativeLayout>
 

 

5. 创建一个新的类(ToDoItemAdapter),使用指定的ToDoItem变量来扩展一个ArrayAdapter。重写getView方法来将ToDoItem对象中的taskdate属性指定给第4步创建的layout中的View

 
import java.text.SimpleDateFormat;
import android.content.Context;
import java.util.*;
import android.view.*;
import android.widget.*;
 
public class ToDoItemAdapter extends ArrayAdapter<ToDoItem> {
int resource;
 
public ToDoItemAdapter(Context _context,int _resource, List<ToDoItem> _items) {
super(_context, _resource, _items);
resource = _resource;
}
 
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LinearLayout todoView;
ToDoItem item = getItem(position);
String taskString = item.getTask();
Date createdDate = item.getCreated();
SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yy”);
String dateString = sdf.format(createdDate);
if (convertView == null)
{
todoView = new LinearLayout(getContext());
String inflater = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater vi;
vi = (LayoutInflater)getContext().getSystemService(inflater);
vi.inflate(resource, todoView, true);
}
else
{
todoView = (LinearLayout) convertView;
}
TextView dateView = (TextView)todoView.findViewById(R.id.rowDate);
TextView taskView = (TextView)todoView.findViewById(R.id.row);
dateView.setText(dateString);
taskView.setText(taskString);
return todoView;
}
}
 

 

6. 最后,用ToDoItemAdapter替换ArrayAdapter的定义。

 

private ToDoItemAdapter aa;

 

onCreate中,使用new ToDoItemAdapter来替换ArrayAdapter<String>的实例化。

 

aa = new ToDoItemAdapter(this, resID, todoItems);

 

7. 如果你运行Activity,它看起来如图5-4的截图。

 

5-4

 

使用SimpleCursorAdapter

 

SimpleCursorAdapter允许你绑定一个游标的列到ListView上,并使用自定义的layout显示每个项目。

 

SimpleCursorAdapter的创建,需要传入当前的上下文、一个layout资源,一个游标和两个数组:一个包含使用的列的名字,另一个(相同大小)数组包含View中的资源ID,用于显示相应列的数据值。

 

下面的框架代码显示了如何构造一个SimpleCursorAdapter来显示联系人信息:

 

String uriString = “content://contacts/people/”;
Cursor myCursor = managedQuery(Uri.parse(uriString), null, null, null, null);
String[] fromColumns = new String[] {People.NUMBER, People.NAME};
int[] toLayoutIDs = new int[] { R.id.nameTextView, R.id.numberTextView};
SimpleCursorAdapter myAdapter;
myAdapter = new SimpleCursorAdapter(this,R.layout.simplecursorlayout,myCursor,fromColumns,toLayoutIDs);
myListView.setAdapter(myAdapter);
 

 

SimpleCursorAdapter在本章前面的创建选择联系人的例子中使用过。你将在第6章学习到更多关于Content ProviderCursor的内容,那里你也将找到更多SimpleCursorAdapter的例子。

分享到:
评论

相关推荐

    SimpleCursorAdapter 数据库查询显示

    在Android开发中,SQLite是一个内置的轻量级数据库系统,用于存储和管理应用程序的数据。当需要将数据库查询结果展示在用户界面(UI)...正确理解和使用SimpleCursorAdapter,能极大地提高Android应用的数据展示效率。

    spinner简单例子

    这个“spinner简单例子”可能是关于如何在Android应用中实现和使用Spinner的一个教程或者代码示例。下面将详细解释Spinner的相关知识点。 1. **Spinner简介** Spinner是Android提供的一个轻量级选择器,它可以在...

    android ListView 例子

    在Android中,常见的Adapter有ArrayAdapter、SimpleCursorAdapter等。ArrayAdapter允许我们用数组或ArrayList来绑定数据,而SimpleCursorAdapter则适用于数据库查询结果。在本例中,我们可能会看到如何创建一个...

    Android listview与adapter用法

    - 在Android中,Adapter通常实现了一个或多个特定接口,例如BaseAdapter、SimpleAdapter、ArrayAdapter和SimpleCursorAdapter等。这些Adapter提供了不同的功能和灵活性,以适应不同场景的需求。 2. **Adapter的...

    AndroidAdapter的介绍[参照].pdf

    - **类型**:在Android中,有多种预定义的Adapter实现,包括BaseAdapter、SimpleAdapter、ArrayAdapter和SimpleCursorAdapter等。 - **BaseAdapter**:这是一个抽象类,提供了基本的框架,需要开发者实现一些核心...

    listview综合使用示例_结合数据库和listitem单击长按等事件

    常见的Adapter有ArrayAdapter、SimpleCursorAdapter等。在这个例子中,可能使用了SimpleCursorAdapter,因为它可以直接绑定SQLite数据库的Cursor对象。 4. **ListItem**:ListView中的每一行称为一个ListItem,可以...

    Android_Spinner的使用

    Android提供了多种内置的Adapter,如ArrayAdapter和SimpleCursorAdapter。对于简单的字符串列表,我们可以使用ArrayAdapter。在代码中,先创建ArrayAdapter,然后将其设置到Spinner上: ```java String[] items = {...

    listViewSample_android_

    Android提供了多种预定义的适配器,如ArrayAdapter、SimpleCursorAdapter等,也可以自定义适配器。在上面的例子中,我们使用了ArrayAdapter来绑定字符串数组到ListView。 **自定义视图** 虽然Android提供了默认的...

    那些复杂的列表总要弄个清楚——(一)ListView动态添加项

    在Android中,最常见的Adapter有ArrayAdapter、SimpleCursorAdapter等。这里我们以ArrayAdapter为例,因为它简单易用且能满足大多数需求。 1. 创建数据源:数据源通常是ArrayList或其他集合类,用来存储待显示的...

    listview使用方法

    适配器的种类有多种,如ArrayAdapter、SimpleCursorAdapter等。以下是一个使用ArrayAdapter的例子: ```java ArrayAdapter&lt;String&gt; adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, items...

    android_list

    常见的Adapter有ArrayAdapter、SimpleCursorAdapter等,开发者可以根据数据类型选择合适的Adapter。 接下来,我们来看看"library"文件夹。这个文件夹可能包含了一些自定义适配器或者第三方库,用于扩展ListView的...

    ListView具体使用实例

    在这里,我们将探讨ArrayAdapter、SimpleAdapter和SimpleCursorAdapter这三种常见的ListView适配器。 1. ArrayAdapter是最基础的适配器,适用于显示单一类型的文本数据。例如,以下代码展示了如何使用ArrayAdapter...

    Android程序设计-ListView介绍.pptx

    Adapter有多种类型,如ArrayAdapter、SimpleCursorAdapter等,可以根据需求选择合适的适配器。 6. **getView()方法**:这是Adapter的核心方法,它用于生成ListView的每个可见项。当ListView需要绘制一个新的或复用...

    AndroidListViewadapter深入解析.pdf

    适配器有几种类型,包括ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。 - **ArrayAdapter**是最基础的适配器,主要用于展示单一类型的文本数据。它的构造函数需要三个参数:上下文、布局资源ID(用于定义每...

    浅析Android之Adapter用法总结

    在Android中,有多种预定义的Adapter类供开发者选择,包括BaseAdapter、SimpleAdapter、ArrayAdapter和SimpleCursorAdapter等。BaseAdapter是一个抽象类,提供了最基本的框架,开发者可以根据需求重写必要的方法以...

    ListView的使用

    在这个例子中,`contact_row`是自定义的布局文件,包含用于显示联系人名称的TextView,`fromColumns`和`toViewIds`分别指定要映射的数据库列和视图控件。 总的来说,ListView的使用涉及选择合适的适配器,提供数据...

    使用三种Adapter构建ListView

    本篇将详细讲解如何使用三种不同的Adapter来构建ListView,包括ArrayAdapter、SimpleAdapter和CursorAdapter。 首先,ArrayAdapter是最基础的Adapter,适用于简单的数据结构,如数组或ArrayList。使用ArrayAdapter...

    Android教学ListView详解[参照].pdf

    在Android中,常见的Adapter有ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。ArrayAdapter是最基础的,适用于展示单一文本数据;SimpleAdapter则提供了更大的灵活性,可以用来映射复杂的数据结构;而...

Global site tag (gtag.js) - Google Analytics