快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

ag真人百家家乐网站:Android 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 ag真人百家家乐网站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,改动ArrayList和ArrayAdapter变量的类型,储存ToDoItem工具而不是字符串。然后,你将改动onCreate措施来更新响应的变量初始化。你还必要更新onKeyListener处置惩罚函数来支持ToDoItem工具。

private ArrayList todoItems;

private ListView myListView;

private EditText myEditText;

private ArrayAdapter 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();

int resID = R.layout.todolist_item;

aa = new ArrayAdapter(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项目的创建日期。

5. 创建一个新的类(ToDoItemAdapter),应用指定的ToDoItem变量来扩展一个ArrayAdapter。重写getView措施来将ToDoItem工具中的task和date属性指定给第4步创建的layout中的View。

import java.text.SimpleDaag真人百家家乐网站teFormat;

import android.content.Context;

import java.util.*;

imag真人百家家乐网站port android.view.*;

import android.widget.*;

public class ToDoItemAdapter extends ArrayAdapter {

int resource;

public ToDoItemAdapter(Context _context,int _resource, List _items) {

super(_context, _resource, _items);

rag真人百家家乐网站esource = _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.sag真人百家家乐网站etText(taskString);

return todoView;

}

}

6. 着末,用ToDoItemAdapter调换ArrayAdapter的定义。

private ToDoItemAdapter aa;

在onCreate中,应用new ToDoItemAdapter来调换ArrayAdapter的实例化。

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 Provider和Cursor的内容,那里你也将找到更多SimpleCursorAdapter的例子。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: