您的位置首页快问快答

如何使用Array Adapter

如何使用Array Adapter

的有关信息介绍如下:

如何使用Array Adapter

android中的Array adapter类用于把一个列表中的数据绑定到一个listview, 它就像一个桥梁,把数据和视图联系起来,下面以我的编码实践讲解如何使用arrayadapter来实现自定义的显示格式。如下图所示,它的功能是在文本框输入内容,点击OK,可以把输入的数据加到下面的列表中,列表每一行显示输入的内容和时期

1.添加两个layout, 一个是activity的, 一个是每一行数据的

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/ok"

android:clickable="true"

android:id="@+id/btn3"

android:layout_below="@+id/et1"/>

android:id = "@+id/listview"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_below="@+id/btn3"

/>

2.增加一个类用于保存每一行的数据:

xmlns:android="

"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background = "#ffffffff"

>

android:id="@+id/date"

android:layout_width = "wrap_content"

android:layout_height = "fill_parent"

android:padding = "10dp"

android:scrollbars = "vertical"

android:fadingEdge = "vertical"

android:layout_alignParentRight="true"

android:textColor = "#ffff0000"

/>

android:id="@+id/title"

android:layout_width = "fill_parent"

android:layout_height = "fill_parent"

android:padding = "10dp"

android:scrollbars = "vertical"

android:fadingEdge = "vertical"

android:layout_alignParentLeft="true"

android:textColor = "#ffff0000"

/>

3.写一个自定义的array adapter,覆盖原来的getView方法,该方法的功能即是返回一个VIEW,这个view将被用于显示一行数据

package pack.xianle.test;

import java.text.SimpleDateFormat;

import java.util.Date;

public class ToDoItem {

String task;

Date created;

public ToDoItem(String t, Date c){

task = t;

this.created = c;

}

public ToDoItem(String t){

this(t, new Date(java.lang.System.currentTimeMillis()));

}

public String getTask(){

return task;

}

public String getDate(){

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");

String dataString = sdf.format(created);

return dataString;

}

@Override

public String toString(){

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");

String dataString = sdf.format(created);

return "["+ dataString +"]" + task;

}

}

3.写activity的代码:

package pack.xianle.test;

import java.util.List;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.LinearLayout;

import android.widget.TextView;

public class MyArrayAdapter extends ArrayAdapter {

int resource;

public MyArrayAdapter(Context c, int r, List items){

super(c, r, items);

this.resource = r;

}

@Override

public View getView(int position, View v, ViewGroup parent) {

ToDoItem item=getItem(position);

LinearLayout todoView;

String taskString = item.getTask();

String dateString = item.getDate();

if (v == null) {

todoView = new LinearLayout(getContext());

LayoutInflater iv = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

iv.inflate(resource, todoView, true);

} else {

todoView = (LinearLayout)v;

}

TextView data = (TextView)todoView.findViewById(R.id.date);

TextView text = (TextView)todoView.findViewById(R.id.title);

data.setText(dateString);

text.setText(taskString);

return todoView;

}

}

ArrayAdapter也可以用于Spinner,如下代码所示:

package pack.xianle.test;

import java.util.ArrayList;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListView;

public class ToDoList extends Activity {

private ArrayList todoItems;

private ListView mListView;

private EditText mEditText;

private MyArrayAdapter aa;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

this.setContentView(R.layout.todolist);

this.mListView = (ListView)this.findViewById(R.id.listview);

this.mEditText = (EditText)this.findViewById(R.id.et1);

todoItems = new ArrayList();

aa = new MyArrayAdapter(this, R.layout.todoitem,todoItems);

mListView.setAdapter(aa);

Button btn = (Button)this.findViewById(R.id.btn3);

btn.setOnClickListener(new OnClickListener(){

public void onClick(View v){

ToDoItem item = new ToDoItem(mEditText.getText().toString());

todoItems.add(0, item);

mEditText.setText("");

aa.notifyDataSetChanged();

}

});

}

}