adapter 学习
来源:互联网 发布:网络聊天的利与弊 编辑:程序博客网 时间:2024/06/11 18:30
在Android应用开发过程中,适配器(Adapter)可是大有可为,尤其是在显示数据、读取数据库用列表显示更是使用频繁。但是今天我们要说的不是读取数据库中的信息,而是自己来添加一行数据让它显示在列表顶层。实现的功能有添加数据和删除数据两项。废话不多说,代码赶紧的!
首先先看下运行效果如下所示:
图一 图二
图三 图四
以上四张图演示了添加一行数据到列表中的功能,至于删除数据在这里就不演示了,留给童靴们去做。
开始介绍工程项目了,步骤如下:
1、新建项目命名为List
2、编写一个Bean封装其属性,命名为Item.java,代码如下:
- package com.wyf.wpf;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- public class Item {
- String task;
- Date created;
- public String getTask() {
- return task;
- }
- public Date getCreated() {
- return created;
- }
- public Item(String _task) {
- this(_task, new Date(java.lang.System.currentTimeMillis()));
- }
- public Item(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;
- }
- }
3、编写三个布局
(1)、main.xml:用于主布局
- <?xml version="1.0" encoding="utf-8"?>
- <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/myListView"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"/>
- </LinearLayout>
(2)、item.xml:用于显示列表中的每列数据
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="horizontal">
- <TextView
- android:id="@+id/row"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:padding="5px"
- android:gravity="center"
- />
- <TextView
- android:id="@+id/rowDate"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="center"
- android:padding="5px"
- />
- </LinearLayout>
(3)、add.xml:用于弹出对话框提示添加数据的布局
- <?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">
- <EditText
- android:id="@+id/add"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- </LinearLayout>
4、自定义自己的Adapter,命名为MyAdapter.java,代码如下:
- package com.wyf.wpf;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.List;
- import android.content.Context;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.TextView;
- public class MyAdapter extends BaseAdapter{
- private LayoutInflater mInflater;
- private List<Item> items;
- public MyAdapter(Context context,List<Item> items){
- this.items=items;
- mInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- }
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return items.size();
- }
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- if(items==null)
- {
- return null;
- }
- else
- {
- return items.get(position);
- }
- }
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- Item item=(Item) getItem(position);
- String nameString=item.getTask().toString();
- Date date=item.getCreated();
- SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");
- String dateString = sdf.format(date);
- ViewHolder holder;
- if(convertView==null){
- holder=new ViewHolder();
- convertView=mInflater.inflate(R.layout.item,null);
- holder.nameText=(TextView)convertView.findViewById(R.id.row);
- holder.dateText=(TextView)convertView.findViewById(R.id.rowDate);
- convertView.setTag(holder);
- }
- else{
- holder = (ViewHolder) convertView.getTag();
- }
- holder.nameText.setText(nameString);
- Log.i("TAG","nameString---->"+nameString);
- Log.i("TAG","holder.name---->"+holder.nameText);
- holder.dateText.setText(dateString);
- return convertView;
- }
- class ViewHolder{
- TextView nameText;
- TextView dateText;
- }
- }
5、编写Activity,这里就不解释了,直接上代码:
- package com.wyf.wpf;
- import java.util.ArrayList;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.DialogInterface.OnClickListener;
- import android.os.Bundle;
- import android.view.KeyEvent;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.EditText;
- import android.widget.ListView;
- public class ListActivity extends Activity{
- private ArrayList<Item> Items;
- private ListView myListView;
- private MyAdapter adapter;
- private String[] str={"添加组","删除组"};
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- myListView = (ListView)findViewById(R.id.myListView);
- Items = new ArrayList<Item>();
- for(int i=0;i<10;i++){
- Item item=new Item("我是"+i);
- Items.add(item);
- }
- adapter=new MyAdapter(this,Items);
- myListView.setAdapter(adapter);
- myListView.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> arg0, View arg1, final int position,
- long arg3) {
- // TODO Auto-generated method stub
- new AlertDialog.Builder(ListActivity.this)
- .setItems(str, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- switch(which){
- case 0:
- LayoutInflater mInflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- final View view=mInflater.inflate(R.layout.add,null);
- new AlertDialog.Builder(ListActivity.this)
- .setView(view)
- .setTitle("添加")
- .setPositiveButton("添加",new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- EditText add=(EditText)view.findViewById(R.id.add);
- String str=add.getText().toString();
- updateAdapter(str);
- dialog.dismiss();
- }
- })
- .setNegativeButton("取消",new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- dialog.dismiss();
- }
- }).show();
- break;
- case 1:
- Items.remove(position);
- adapter.notifyDataSetChanged();
- dialog.dismiss();
- break;
- }
- }
- }).show();
- }
- });
- }
- //更新adapter函数
- public void updateAdapter(String str){
- Item newItem;
- newnewItem = new Item(str);
- Items.add(0, newItem);
- adapter.notifyDataSetChanged();
- }
- }
上面的代码一般都不难,在这里就没必要详解了,只是需要注意一点,我没要刷新列表数据,就的使用adapter.notifyDataSetChanged();来更新。
- adapter 学习
- android adapter的学习
- Android适配器Adapter学习
- Android适配器Adapter学习
- Android学习 --- Adapter
- Android适配器Adapter学习
- Android适配器Adapter学习
- AdapterView、Adapter深度学习
- Android学习笔记 - Adapter
- adapter 适配器的学习
- Android适配器Adapter学习
- Android适配器Adapter学习
- Adapter初步学习
- 设计模式学习6 Adapter
- Android 适配器Adapter的学习
- android学习笔记 Listview adapter
- 【设计模式学习笔记】Adapter
- Android 适配器Adapter的学习
- svg
- Android中如何做到Service被关闭后又自动启动
- Jquery获取多选框、单选框的值
- Why Domain Model Design ?
- 程序员版 双节棍 搞笑
- adapter 学习
- 通过Exchange 的 Powershell批量创建AD账户和邮箱
- mysql PID file not found and Can't connect to MySQL through socket mysql.sock
- CInternetSession(可获取网页源码)的简单使用
- Download XE2 Update3
- 创建随机目录及目录树函数
- poi创建excel工作表表名为中文
- Java的内存泄漏
- 节点流 处理流