android 动态可以删除吗,安卓动态添加删除多个控件

新手上路,没找到动态添加删除多个控件,捣鼓了个,做错的地方麻烦大家说下

activity_main.xml:

android:id="@+id/add"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="myclick"

android:text="add" />

android:id="@+id/addlayout"

android:layout_width="match_parent"

android:layout_above="@+id/surebutton"

android:layout_height="match_parent"

android:layout_below="@+id/add"

android:orientation="vertical" >

android:id="@+id/surebutton"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:onClick="myclick"

android:text="确定" />

addlayout.xml:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/delete"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="10dp"

android:layout_alignParentRight="true"

android:background="@drawable/delete"

android:onClick="myclick" />

android:id="@+id/unit"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/delete"

android:layout_toLeftOf="@+id/delete"

android:onClick="myclick"

android:text="无" />

android:id="@+id/edittext"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/delete"

android:layout_toLeftOf="@+id/unit" />

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Map.Entry;

import android.app.Activity;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.LinearLayout;

public class MainActivity extends Activity implements OnClickListener {

LinearLayout ll;

//我用List添加多个对象后不能正常删除控件,如果有人知道怎么做麻烦告诉我一下,新手小白一枚。。。

Map deletebutton;

Map unitbutton;

Map edittext;

Map vi;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ll = (LinearLayout) findViewById(R.id.addlayout);

deletebutton = new HashMap();

unitbutton = new HashMap();

edittext = new HashMap();

vi = new HashMap();

}

//获取添加对象

public View getPartView() {

return LayoutInflater.from(this).inflate(R.layout.addlayout, null);

}

int tag = 0;//循环

public void myclick(View v) {

switch (v.getId()) {

case R.id.add:

View view = getPartView();

// 添加右边删除按钮

Button button = (Button) view.findViewById(R.id.delete);

button.setBackgroundResource(R.drawable.delete);

//之所以用tag不用id的原因是监听的时候id和别的控件重复,别的控件能响应到设置的id

button.setTag(tag);

button.setOnClickListener(this);

deletebutton.put(tag, button);

// 中间按钮,想换成Spinner,现在没做,可忽略

Button changebutton = (Button) view.findViewById(R.id.unit);

changebutton.setOnClickListener(this);

unitbutton.put(tag, changebutton);

// 添加输入框

EditText edit = (EditText) view.findViewById(R.id.edittext);

edittext.put(tag, edit);

ll.addView(view);//将view对象添加到布局文件

vi.put(tag, view);

System.out.println("addtag:" + tag);

tag++;

break;

case R.id.surebutton:

Iterator iter = edittext.entrySet().iterator();

while (iter.hasNext()) {

Entry entry = (Entry) iter.next();

System.out.println(entry.getKey() + ":"

+ ((EditText) entry.getValue()).getText().toString());

}

default:

break;

}

}

@Override

public void onClick(View v) {

//hashmap的循环遍历方式

Iterator iter = deletebutton.entrySet().iterator();

while (iter.hasNext()) {

Entry entry = (Entry) iter.next();

if (v.getTag().equals(entry.getKey())) {

ll.removeView(vi.get(v.getTag()));

deletebutton.remove(v.getTag());

unitbutton.remove(v.getTag());

edittext.remove(v.getTag());

break;

}

}

}

}

72990825_1

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值