本人最近开发一款订餐应用,有一个是关于订餐数量的,本来打算用的是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()` 方法就是实现这一功能的关键。本文将深入探讨如何使用 `addView()` 添加组件,并以动态添加列表项和 `...
`Android SurfaceView添加组件view不被组件覆盖` 这个文件可能是示例代码或者详细教程,里面应该包含了如何将这些概念应用到实际项目中的具体步骤。 总的来说,处理 `SurfaceView` 与其他组件的层次关系是安卓开发...
在Android应用程序开发中,动态添加和删除控件或布局是一项常用且重要的技能。这使得我们的应用能够根据用户交互或者特定条件灵活地改变界面。本文将深入探讨如何在Android程序中实现这一功能,以及如何设置控件的...
2. **购物车组件**:实现添加、删除商品,以及结算功能。 3. **用户组件**:处理用户登录、注册、个人信息管理等功能。 4. **订单组件**:处理订单创建、支付、物流跟踪等业务逻辑。 5. **统计组件**:利用友盟等...
总之,动态添加图片在Android应用中涉及多个层面,包括组件的动态创建、图片的选择与处理、用户交互以及网络通信等。`multiimagechooser-master`项目是一个很好的学习资源,通过阅读源码,开发者可以更好地理解这一...
本篇将深入探讨如何构建一个支持动态布局的Android抽屉组件,以ExPanel(1)为例。 首先,抽屉组件的核心是`android.support.v4.widget.DrawerLayout`,它是Android Support Library中的一个控件,用于创建滑动抽屉...
总结来说,uni小程序SDK的Android组件化是通过模块化、插件化、动态加载等策略实现的,它使得开发者能够在Android平台上高效地利用uni-app进行小程序的开发,提高了开发效率和应用质量。理解并掌握这些技术,对于...
android开发有时不知道该有多少个控件,需要动态添加或删除,比如:发帖页面。该例子工程实现了动态添加和删除一组控件(包含EditText和ImageButton按钮)。实现逻辑比较简单,希望有所启发!
安全使用Intent的策略包括避免隐式Intent的无差别广播,通过设定合适的Intent-filter来严格控制可以响应的组件,以及在敏感操作中添加权限校验。 Broadcast Receiver负责接收和处理系统或应用发送的广播消息。由于...
综上所述,一个强大完善的Android组件化方案需要综合运用各种技术和设计模式,包括模块化构建、动态加载、事件总线、依赖注入、接口隔离等,同时注重测试、数据管理和协作流程,以实现可扩展、可维护的Android应用。...
在实际使用中,设计师可以将这些组件自由组合,构建出符合Android 4.0风格的界面原型,同时通过Axure的交互设计功能,为每个组件添加动画效果、条件逻辑和数据绑定,使原型具备模拟真实应用的能力。这不仅有利于设计...
Android Fragment 是 Android 3.0 中引入的一种新的 UI 组件,旨在支持大屏幕设备上更加灵活和动态的用户界面设计。Fragment 允许开发者将 Activity 的布局分散到多个 Fragment 中,每个 Fragment 拥有它自己的生命...
在Android开发中,视图组件(View)是构建用户界面的基本元素,它们为用户提供与应用交互的方式。动态效果则是提升用户体验的重要手段,让界面更具吸引力和互动性。本主题主要探讨的是如何在Android中实现ListView的...
本篇将深入探讨如何创建一个可动态布局的Android抽屉组件,提供一个完整的实现案例源码。 首先,抽屉组件的基本概念:DrawerLayout是Android提供的一个视图容器,它可以包含两个主要区域——主内容视图和一个或多个...
2. **Android组件**: Android Axure组件库中包含了大量的Android原生控件,如按钮、文本输入框、滑动条、选择器、下拉菜单、底部导航栏等。这些组件都遵循了Android Material Design指南,确保了设计的规范性和一致...
在Android 5.0(代号Lollipop)的更新中,谷歌引入了多个新组件以提升用户体验和开发者效率。这个"Android 5.0 新组件Demo"是针对这些改进的一个实践示例,让我们来深入探讨其中的核心组件:RecyclerView、CardView...
本篇文章将重点讨论Android组件化开发中的模块间Activity如何相互启动以及如何进行数据传递。 首先,`Activity`是Android四大组件之一,它是用户与应用交互的主要界面。在组件化开发中,由于各个模块是相互独立的,...
【标题】"BGAFlowLayout-Android动态添加View.zip" 是一个关于Android开发的项目压缩包,其中包含了BGAFlowLayout的实现。BGAFlowLayout是一个自定义的布局管理器,专为在Android应用中动态添加和展示View而设计。它...
然而,当在SurfaceView上添加其他组件(如ImageView、TextView等)时,可能会遇到这些组件被SurfaceView覆盖的问题。本文将深入探讨如何解决这个问题。 首先,理解SurfaceView的工作原理是关键。SurfaceView在窗口...
本文将深入探讨Android组件化的SPI概念,并基于提供的"spi,Android组件化的SPI。.zip"压缩包,推测这是一个关于Android SPI实践的开源项目。 在Android组件化开发中,SPI主要体现在以下几个方面: 1. **组件解耦**...