`

android组件动态添加

阅读更多
本人最近开发一款订餐应用,有一个是关于订餐数量的,本来打算用的是listview,但是那里的listview没有学会,在网上也没有找到好的代码,于是博主最近就直接用的动态添加组件了,跟大家分享一下,一般情况下如果是动态添加组件,首先我们可以在最原始xml文件中有一个最基本的布局,比如是linelayout此时我们可以可以在java代码中获取这个布局的id值
private LinearLayout shopinfo_content;shopinfo_content=(LinearLayout)findViewById(R.id.shopinfo_content);
在得到id后,比如我用的foods之中存储用户所买的所有数据,那么我们就可以动态生成一个相当于listview的表格了,
private void setshop(){
		shopinfo_content.removeAllViews();//移除所有组件  用以界面刷新
		LinearLayout line=new LinearLayout(ShoppingActivity.this);
		line.setClickable(true);
		line.setOrientation(LinearLayout.HORIZONTAL);
		final TextView shop_name=new TextView(ShoppingActivity.this);//名称
		shop_name.setText("名称");
		shop_name.setTextSize(18);
		shop_name.setTextColor(Color.BLACK);
		line.addView(shop_name);
		final TextView shop_price=new TextView(ShoppingActivity.this);//单价
		shop_price.setText("                单价");
		shop_price.setTextSize(18);
		shop_price.setTextColor(Color.BLACK);
		line.addView(shop_price);
		final TextView shop_number=new TextView(ShoppingActivity.this);//数量
		shop_number.setText("         数量");
		shop_number.setTextSize(18);
		shop_number.setTextColor(Color.BLACK);
		line.addView(shop_number);
		final TextView shop_thing=new TextView(ShoppingActivity.this);//操作
		shop_thing.setText("             操作");
		shop_thing.setTextSize(18);
		shop_thing.setGravity(Gravity.RIGHT);//居右对齐
		shop_thing.setTextColor(Color.BLACK);
		line.addView(shop_thing);
		shopinfo_content.addView(line);
		for(int i=0;i<foods.size();i++){
			
			LinearLayout line1=new LinearLayout(ShoppingActivity.this);
			line1.setClickable(true);
			line1.setOrientation(LinearLayout.HORIZONTAL);
			
			final TextView lunch_name=new TextView(ShoppingActivity.this);
			lunch_name.setText(foods.get(i).getName());
			lunch_name.setTextSize(18);
			lunch_name.setTextColor(Color.BLACK);
			line1.addView(lunch_name);
			
			
			final TextView lunch_price=new TextView(ShoppingActivity.this);
			//System.out.println("价格"+foods.get(i).getPrice());
			String text_price=new String();
			text_price=foods.get(i).getPrice()+"         ";
			lunch_price.setText(text_price);
			lunch_price.setTextSize(18);
			lunch_price.setTextColor(Color.BLACK);
			line1.addView(lunch_price);
			
			final TextView lunch_reduce=new TextView(ShoppingActivity.this);
			lunch_reduce.setId(i);
			lunch_reduce.setBackgroundResource(R.drawable.reduce);
			lunch_reduce.setHeight(18);
			lunch_reduce.setWidth(18);
			line1.addView(lunch_reduce);
			
			lunch_reduce.setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View v) {
					int i=lunch_reduce.getId();//获取当前的组件id  用于辨识组件
					
						int number=foods.get(i).getCount()-1;
						foods.get(i).setCount(number);
						


					
				}
			});
			
			final TextView lunch_number=new TextView(ShoppingActivity.this);
			String text_number=new String();
			text_number="  "+foods.get(i).getCount()+"   ";
			lunch_number.setText(text_number);
			lunch_number.setTextSize(18);
			lunch_number.setTextColor(Color.BLACK);
			line1.addView(lunch_number);
			
			final TextView lunch_add=new TextView(ShoppingActivity.this);
			lunch_add.setId(20+i);
			lunch_add.setBackgroundResource(R.drawable.add);
			lunch_add.setHeight(18);
			lunch_add.setWidth(18);
			line1.addView(lunch_add);
			
			lunch_add.setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View v) {
					int i=lunch_add.getId()-20;//获取当前的组件id  用于辨识组件
					int number=foods.get(i).getCount()+1;
					foods.get(i).setCount(number);
				}
			});
			
			final TextView lunch_delete=new TextView(ShoppingActivity.this);
			lunch_delete.setId(40+i);
			lunch_delete.setText("       删除");
			
			lunch_delete.setGravity(Gravity.RIGHT);//居右对齐
			lunch_delete.setTextSize(18);
			lunch_delete.setTextColor(Color.BLACK);
			line1.addView(lunch_delete);
			lunch_delete.setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View v) {
					int i=lunch_delete.getId()-40;//获取当前的组件id  用于辨识组件
					foods.remove(i);
				}
			});
			shopinfo_content.addView(line1);
		}
		
		
		
		
	}
其中还可以对其进行监听,用不同的id进行标识,然后对其进行操作,其中的还可以刷新界面,将组件全部进行重构
分享到:
评论

相关推荐

    Android使用addView动态添加组件

    在Android开发中,动态添加组件是一项常见的需求,特别是在创建自定义布局或实现可变内容的界面时。`addView()` 方法就是实现这一功能的关键。本文将深入探讨如何使用 `addView()` 添加组件,并以动态添加列表项和 `...

    安卓Android源码——SurfaceView添加组件view不被组件覆盖.zip

    `Android SurfaceView添加组件view不被组件覆盖` 这个文件可能是示例代码或者详细教程,里面应该包含了如何将这些概念应用到实际项目中的具体步骤。 总的来说,处理 `SurfaceView` 与其他组件的层次关系是安卓开发...

    android 程序中动态添加删除控件或布局

    在Android应用程序开发中,动态添加和删除控件或布局是一项常用且重要的技能。这使得我们的应用能够根据用户交互或者特定条件灵活地改变界面。本文将深入探讨如何在Android程序中实现这一功能,以及如何设置控件的...

    Android项目之组件化

    2. **购物车组件**:实现添加、删除商品,以及结算功能。 3. **用户组件**:处理用户登录、注册、个人信息管理等功能。 4. **订单组件**:处理订单创建、支付、物流跟踪等业务逻辑。 5. **统计组件**:利用友盟等...

    android 动态添加图片

    总之,动态添加图片在Android应用中涉及多个层面,包括组件的动态创建、图片的选择与处理、用户交互以及网络通信等。`multiimagechooser-master`项目是一个很好的学习资源,通过阅读源码,开发者可以更好地理解这一...

    “可动态布局”的Android抽屉组件之构建基础

    本篇将深入探讨如何构建一个支持动态布局的Android抽屉组件,以ExPanel(1)为例。 首先,抽屉组件的核心是`android.support.v4.widget.DrawerLayout`,它是Android Support Library中的一个控件,用于创建滑动抽屉...

    uni小程序 SDK android 组件化

    总结来说,uni小程序SDK的Android组件化是通过模块化、插件化、动态加载等策略实现的,它使得开发者能够在Android平台上高效地利用uni-app进行小程序的开发,提高了开发效率和应用质量。理解并掌握这些技术,对于...

    android动态添加删除组件(Layout)

    android开发有时不知道该有多少个控件,需要动态添加或删除,比如:发帖页面。该例子工程实现了动态添加和删除一组控件(包含EditText和ImageButton按钮)。实现逻辑比较简单,希望有所启发!

    Android组件与数据存储安全分析及实战

    安全使用Intent的策略包括避免隐式Intent的无差别广播,通过设定合适的Intent-filter来严格控制可以响应的组件,以及在敏感操作中添加权限校验。 Broadcast Receiver负责接收和处理系统或应用发送的广播消息。由于...

    Android-一个强大完善的Android组件化方案

    综上所述,一个强大完善的Android组件化方案需要综合运用各种技术和设计模式,包括模块化构建、动态加载、事件总线、依赖注入、接口隔离等,同时注重测试、数据管理和协作流程,以实现可扩展、可维护的Android应用。...

    Android 4.0 组件库 for Axure

    在实际使用中,设计师可以将这些组件自由组合,构建出符合Android 4.0风格的界面原型,同时通过Axure的交互设计功能,为每个组件添加动画效果、条件逻辑和数据绑定,使原型具备模拟真实应用的能力。这不仅有利于设计...

    android组件Fragment介绍

    Android Fragment 是 Android 3.0 中引入的一种新的 UI 组件,旨在支持大屏幕设备上更加灵活和动态的用户界面设计。Fragment 允许开发者将 Activity 的布局分散到多个 Fragment 中,每个 Fragment 拥有它自己的生命...

    android的视图组件的一些动态效果代码

    在Android开发中,视图组件(View)是构建用户界面的基本元素,它们为用户提供与应用交互的方式。动态效果则是提升用户体验的重要手段,让界面更具吸引力和互动性。本主题主要探讨的是如何在Android中实现ListView的...

    “可动态布局”的Android抽屉组件之完整篇

    本篇将深入探讨如何创建一个可动态布局的Android抽屉组件,提供一个完整的实现案例源码。 首先,抽屉组件的基本概念:DrawerLayout是Android提供的一个视图容器,它可以包含两个主要区域——主内容视图和一个或多个...

    Android Axure组件库

    2. **Android组件**: Android Axure组件库中包含了大量的Android原生控件,如按钮、文本输入框、滑动条、选择器、下拉菜单、底部导航栏等。这些组件都遵循了Android Material Design指南,确保了设计的规范性和一致...

    Android 5.0 新组件Demo

    在Android 5.0(代号Lollipop)的更新中,谷歌引入了多个新组件以提升用户体验和开发者效率。这个"Android 5.0 新组件Demo"是针对这些改进的一个实践示例,让我们来深入探讨其中的核心组件:RecyclerView、CardView...

    Android 组件化开发module间通信

    本篇文章将重点讨论Android组件化开发中的模块间Activity如何相互启动以及如何进行数据传递。 首先,`Activity`是Android四大组件之一,它是用户与应用交互的主要界面。在组件化开发中,由于各个模块是相互独立的,...

    BGAFlowLayout-Android动态添加View.zip

    【标题】"BGAFlowLayout-Android动态添加View.zip" 是一个关于Android开发的项目压缩包,其中包含了BGAFlowLayout的实现。BGAFlowLayout是一个自定义的布局管理器,专为在Android应用中动态添加和展示View而设计。它...

    Android代码-SurfaceView添加组件view不被组件覆盖.zip

    然而,当在SurfaceView上添加其他组件(如ImageView、TextView等)时,可能会遇到这些组件被SurfaceView覆盖的问题。本文将深入探讨如何解决这个问题。 首先,理解SurfaceView的工作原理是关键。SurfaceView在窗口...

    spi,Android组件化的SPI。.zip

    本文将深入探讨Android组件化的SPI概念,并基于提供的"spi,Android组件化的SPI。.zip"压缩包,推测这是一个关于Android SPI实践的开源项目。 在Android组件化开发中,SPI主要体现在以下几个方面: 1. **组件解耦**...

Global site tag (gtag.js) - Google Analytics