安卓——ListView的动态添加与删除

简介:    一,添加                  case R.id.imgBtnAdd:/*添加列表*/ if(SetTempListView.getChildCount()>5){ Toast.


   一,添加

 

                

case R.id.imgBtnAdd:/*添加列表*/
			if(SetTempListView.getChildCount()>5){
				Toast.makeText(getApplicationContext(), "列表只能添加6条!", Toast.LENGTH_SHORT).show();
				break;
			}
			listItem.clear();
			for(int i=0;i<SetTempListView.getChildCount();i++){
				View view=SetTempListView.getChildAt(i);
				TextView txtTemp=(TextView)view.findViewById(R.id.txtBeginTime);
				EditText editTemp=(EditText)view.findViewById(R.id.txtTemperature);
				HashMap<String,String> map=new HashMap<String,String>();  
		    	map.put("BeginTime",txtTemp.getText().toString());
		    	map.put("txtTemperature", editTemp.getText().toString());
		    	listItem.add(map);
			}
			HashMap<String,String> map1=new HashMap<String,String>();  
	    	map1.put("BeginTime","-请选择时间-");
	    	map1.put("txtTemperature","");
	    	listItem.add(map1);
	    	listItemAdapter.notifyDataSetChanged();
			break;


二,删除

 

listItemView.imgDelete.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				//Toast.makeText(context, mPosition+"", Toast.LENGTH_SHORT).show();
				listItem.remove(mPosition);
				notifyDataSetChanged();
			}
		});


三,修改后的getView方法


public View getView(final int mPosition, View convertView, ViewGroup parent) {
		//final int mPosition = position;    
		
		 ListItemView listItemView = null;
		 
		//if (convertView == null) {
			convertView = listContainer.inflate(resource, null);//加载布局
			listItemView = new ListItemView();
			/*初始化控件容器集合*/
			listItemView.txtBeginTime=(TextView) convertView
					.findViewById(R.id.txtBeginTime); /*开始时间*/
			listItemView.txtTemperature=(EditText)convertView
					.findViewById(R.id.txtTemperature);/*温度显示*/
			listItemView.imgDelete=(ImageView)convertView
					.findViewById(R.id.imgDelete);/*删除此行*/
			
			// 设置控件集到convertView 
			//convertView.setTag(listItemView);
		//}else{
			//listItemView=(ListItemView)convertView.getTag();//利用缓存的View
		//}
		listItemView.txtBeginTime.setText(listItem.get(mPosition).get("BeginTime"));
		listItemView.txtTemperature.setText(listItem.get(mPosition).get("txtTemperature"));
		//listItemView.txtBeginTime.setText(listItem.get(mPosition).get("BeginTime"));
		/*控件的初始化操作*/
		new PopDateTimePicker(listItemView.txtBeginTime);
		/*绑定textchange事件,方式getview初始化时候丢掉数据*/
		listItemView.txtBeginTime.addTextChangedListener(new TextWatcher() {

			@Override
			public void afterTextChanged(Editable s) {
				listItem.get(mPosition).put("BeginTime", s.toString());
			}

			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
			}

			@Override
			public void onTextChanged(CharSequence s, int start, int before,
					int count) {
				
			}
			
		});
		listItemView.txtTemperature.addTextChangedListener(new TextWatcher(){

			@Override
			public void afterTextChanged(Editable s) {
				listItem.get(mPosition).put("txtTemperature", s.toString());
			}

			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
			}

			@Override
			public void onTextChanged(CharSequence s, int start, int before,
					int count) {
				
				
			}
		});
		listItemView.imgDelete.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				//Toast.makeText(context, mPosition+"", Toast.LENGTH_SHORT).show();
				listItem.remove(mPosition);
				notifyDataSetChanged();
			}
		});
		
		
		
		return convertView;
	}
	

  

       activity如下:


                

            




唉,真心感觉listView很奇葩(多于一屏的问题还没有处理掉,有经验的留个言)。







目录
相关文章
|
6月前
|
API Android开发 开发者
Android UI设计: 什么是RecyclerView?为什么它比ListView更好?
Android UI设计: 什么是RecyclerView?为什么它比ListView更好?
81 2
|
5月前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
62 2
|
6月前
|
XML Java Android开发
Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)
Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)
661 1
|
5月前
|
前端开发 API Android开发
25. 【Android教程】列表控件 ListView
25. 【Android教程】列表控件 ListView
150 2
|
6月前
|
XML Java Android开发
如何美化android程序:自定义ListView背景
如何美化android程序:自定义ListView背景
59 2
|
6月前
|
XML 编解码 Java
Android控件之高级控件——ListView、cardView、屏幕适配
Android控件之高级控件——ListView、cardView、屏幕适配
|
11月前
|
XML Android开发 数据格式
安卓-无敌解决ListView添加标题头无法正常显示的问题(歪门邪道)
安卓-无敌解决ListView添加标题头无法正常显示的问题(歪门邪道)
75 0
|
Java Android开发
[笔记]Android 学习一之转场动画+ViewPager+ListView简单Demo
[笔记]Android 学习一之转场动画+ViewPager+ListView简单Demo
|
XML Java Android开发
Android优化版ListView(附源代码)
本文是博主对Adapter(适配器)的一些理解,为了加深对Adapter的理解以及记录自己的阶段学习而写,同时也适合初学者阅读,参考本条博客的逻辑进行学习。
144 0
|
Android开发
安卓中listview点击每一条进入不同界面
安卓中listview点击每一条进入不同界面
110 0