android ListView内数据的动态添加与删除

时间:2023-01-25 08:37:00

main.xml 文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="horizontal"
  6. >
  7. <LinearLayout
  8. android:layout_width="fill_parent"
  9. android:layout_height="fill_parent"
  10. android:orientation="vertical"
  11. >
  12. <ListView
  13. android:id="@+id/listview"
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. />
  17. <Button
  18. android:id="@+id/add"
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:text="添加"
  22. />
  23. </LinearLayout>
  24. </LinearLayout>

listview_item.xml文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:orientation="horizontal"
  6. android:background="#000000"
  7. android:padding="20dp"
  8. >
  9. <EditText
  10. android:id="@+id/edit"
  11. android:layout_width="200dp"
  12. android:layout_height="wrap_content"
  13. />
  14. <Button
  15. android:id="@+id/del"
  16. android:layout_width="wrap_content"
  17. android:layout_height="wrap_content"
  18. android:text="删除"
  19. />
  20. </LinearLayout>

MainActivity .java

    1. package com.yyy.testandroid;
    2. import java.util.ArrayList;
    3. import android.app.Activity;
    4. import android.content.Context;
    5. import android.os.Bundle;
    6. import android.view.LayoutInflater;
    7. import android.view.View;
    8. import android.view.View.OnClickListener;
    9. import android.view.View.OnFocusChangeListener;
    10. import android.view.ViewGroup;
    11. import android.widget.BaseAdapter;
    12. import android.widget.Button;
    13. import android.widget.EditText;
    14. import android.widget.ListView;
    15. import android.widget.TextView;
    16. public class TestAndroidActivity extends Activity {
    17. /** Called when the activity is first created. */
    18. private Button button,add;
    19. private TextView text;
    20. private ListView listview;
    21. public MyAdapter adapter;
    22. @Override
    23. public void onCreate(Bundle savedInstanceState) {
    24. super.onCreate(savedInstanceState);
    25. setContentView(R.layout.main);
    26. listview = (ListView) findViewById(R.id.listview);
    27. add = (Button) findViewById(R.id.add);
    28. adapter = new MyAdapter(this);
    29. listview.setAdapter(adapter);
    30. add.setOnClickListener(new OnClickListener() {
    31. @Override
    32. public void onClick(View arg0) {
    33. // TODO Auto-generated method stub
    34. adapter.arr.add("");
    35. adapter.notifyDataSetChanged();
    36. }
    37. });
    38. }
    39. private class MyAdapter extends BaseAdapter {
    40. private Context context;
    41. private LayoutInflater inflater;
    42. public ArrayList<String> arr;
    43. public MyAdapter(Context context) {
    44. super();
    45. this.context = context;
    46. inflater = LayoutInflater.from(context);
    47. arr = new ArrayList<String>();
    48. for(int i=0;i<3;i++){    //listview初始化3个子项
    49. arr.add("");
    50. }
    51. }
    52. @Override
    53. public int getCount() {
    54. // TODO Auto-generated method stub
    55. return arr.size();
    56. }
    57. @Override
    58. public Object getItem(int arg0) {
    59. // TODO Auto-generated method stub
    60. return arg0;
    61. }
    62. @Override
    63. public long getItemId(int arg0) {
    64. // TODO Auto-generated method stub
    65. return arg0;
    66. }
    67. @Override
    68. public View getView(final int position, View view, ViewGroup arg2) {
    69. // TODO Auto-generated method stub
    70. if(view == null){
    71. view = inflater.inflate(R.layout.list_item, null);
    72. }
    73. final EditText edit = (EditText) view.findViewById(R.id.edit);
    74. edit.setText(arr.get(position));    //在重构adapter的时候不至于数据错乱
    75. Button del = (Button) view.findViewById(R.id.del);
    76. edit.setOnFocusChangeListener(new OnFocusChangeListener() {
    77. @Override
    78. public void onFocusChange(View v, boolean hasFocus) {
    79. // TODO Auto-generated method stub
    80. if(arr.size()>0){
    81. arr.set(position, edit.getText().toString());
    82. }
    83. }
    84. });
    85. del.setOnClickListener(new OnClickListener() {
    86. @Override
    87. public void onClick(View arg0) {
    88. // TODO Auto-generated method stub
    89. //从集合中删除所删除项的EditText的内容
    90. arr.remove(position);
    91. adapter.notifyDataSetChanged();
    92. }
    93. });
    94. return view;
    95. }
    96. }
    97. }

http://blog.csdn.net/centralperk/article/details/7446726

android ListView内数据的动态添加与删除的更多相关文章

  1. JS实现动态添加和删除div

    实现方式一:只在最后一个数据中动态添加或者删除 | 背景需要做一个页面,页面可以输入参数,点击确认按钮可以发请求给某接口.但是接口的某个字段是数组类型,所以在页面上需要实现添加或者删除元素的功能. | ...

  2. 在页面上绘制一张表格,使用 DOM 节点的动态添加和删除向表格中插入数据,点击表格每行后的&OpenCurlyDoubleQuote;删除”超链接

    查看本章节 查看作业目录 需求说明: 在页面上绘制一张表格,使用 DOM 节点的动态添加和删除向表格中插入数据,点击表格每行后的"删除"超链接,使用 DOM 节点的删除操作将对应的 ...

  3. Android&lowbar;&lpar;控件&rpar;动态添加或删除Spinner下拉菜单

    使用ArrayList动态数组的依赖性实现动态增减Spinner下拉菜单选项功能. 设置一个EditText输入框,当用户输入了文字并单击[添加]按钮的同时,就会将输入的值添加Spinner至下拉菜单 ...

  4. 插件~使用ECharts动态在地图上标识点~动态添加和删除标识点

    之前写过一个Echarts的文章,没有基础的同学可以先看这<上一篇>,对于一个地图和说,我们在初始化之后,你可能被在地图上标识出一些点,当然这根据你的业务去标识,而如果每次更新数据都加载全 ...

  5. jquery 动态添加和删除 ul li列表

    今天需要实现一个jquery动态添加和删除  ul li列表中的li行,自己简单的实现乐一个,分享一下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  6. adoop集群动态添加和删除节点

    hadoop集群动态添加和删除节点说明 上篇博客我已经安装了Hadoop集群(hadoop集群的安装步骤和配置),现在写这个博客我将在之前的基础上进行节点的添加的删除. 首先将启动四台机器(一主三从) ...

  7. 后盾网lavarel视频项目---vue实现动态添加和删除板块

    后盾网lavarel视频项目---vue实现动态添加和删除板块 一.总结 一句话总结: 原理就是:列表时根据vue中的videos变量中的元素来遍历的,初始时videos:[{title:'',pat ...

  8. &lbrack;Flex&rsqb; Accordion系列-动态添加或删除Accordion容器中项目

    <?xml version="1.0" encoding="utf-8"?> <!--Flex中如何使用addChild()和removeCh ...

  9. Unity NGUI中动态添加和删除sprite

    (以后,参考链接和作者将在文章首部给出,转载请保留此部分内容) 参考链接:http://www.narkii.com/club/thread-299977-1.html,作者:纳金网 比巴卜: 参考链 ...

随机推荐

  1. 在Application中集成Microsoft Translator服务之使用http获取服务

    一.创建项目 首先我们来创建一个ASP.NET Application 选择时尚时尚最时尚的MVC,为了使演示的Demo更简单,这里选择无身份验证 二.创建相关类 项目需要引入之前两个类AdmAcce ...

  2. mybatis入门&lowbar;配置文件的配置

    一.全局配置文件配置 1.1 properties标签 Properties标签可以用来加载配置文件.例如,我们可以将数据库的连接信息放入到一个配置文件(db.properties中..) 下为db. ...

  3. sublime text常用插件

    这个比较重要,不会装插件的时候找了好久 sublime text常用插件 1.插件的安装方法 第一种:用package control 这个是用来管理插件的,必备啊,安装package control ...

  4. MornUI 源码阅读笔记

    1. label的mouseChildren属性为true,但label本身是不需要监听textfield的任何事件的, 个人猜测是为了给TextInput, TextArea用的,因为后两者需要监听 ...

  5. 27、Service

    1服务可以通过startservice的方法 开启.通过stopservice的方法 停止. 服务有一个特点: 只会一次onCreate()方法一旦被创建出来,以后oncreate() 就不会再被执行 ...

  6. &lbrack;leetcode-494-Target Sum&rsqb;

    You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you have 2 symb ...

  7. eclipse集成testng插件

    一.TestNG简介 TestNG是一个开源自动化测试框架,它受到JUnit和NUnit的启发,而引入了许多新的创新功能,如依赖测试,分组概念,使测试更强大,更容易做到. 它旨在涵盖所有类别的测试:单 ...

  8. 发送http请求的方法

    在http/1.1 协议中,定义了8种发送http请求的方法 get post options head put delete trace connect patch. 根据http协议的设计初衷,不 ...

  9. &lt&semi;aop&colon;aspectj-autoproxy &sol;&gt&semi;作用

    通过配置织入@Aspectj切面 虽然可以通过编程的方式织入切面,但是一般情况下,我们还是使用spring的配置自动完成创建代理织入切面的工作. 通过aop命名空间的<aop:aspectj-a ...

  10. opencv3&period;0&plus;vs2013安装记录

    为了能够更好的学习图像,我觉得opencv是一个必不可少的库,因此在以后的研究上使用opencv作为研究工具,与大家共同进步. 话归正题:先搭建opencv的环境. 1.下载安装包3.0 a,官网打开 ...