android实现动态生成控件(setTag和getTag属性的用法)

来源:互联网 发布:平顶山java培训班经验 编辑:程序博客网 时间:2024/05/17 05:03

哈喽大家好!

这次给大家分享出安卓里面如何动态生成控件

这里有用到模拟数据库生成一些对象来进行取值和赋值

那么首先你得要有一个类

这里就用员工类Employee作为一个小案例来写了

所以第一步:

你要有个员工类  类中的属性根据需求来定义

然后第二步:

在MainActivity里面的代码如下:

package com.example.a06_d03;import java.util.ArrayList;import java.util.List;import android.R.integer;import android.os.Bundle;import android.app.ActionBar.LayoutParams;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.LinearLayout;import android.widget.RadioButton;import android.widget.Toast;public class MainActivity extends Activity {// 一些控件private Button bt_main_btn;private LinearLayout lt_main_ly;// 存放Employee的list集合private List<Employee> data = new ArrayList<Employee>();// 存放CheckBox的数组private CheckBox[] checkBoxs = null;// 初始化private void initData() {data.add(new Employee(1, "aa"));data.add(new Employee(2, "bb"));data.add(new Employee(3, "cc"));data.add(new Employee(4, "dd"));// 设置保存CheckBox的数组长度checkBoxs = new CheckBox[data.size()];CheckBox cb;Employee e = null;for (int i = 0; i < data.size(); i++) {// 获得Employee对象e = data.get(i);// 动态创建CheckBox组件cb = new CheckBox(MainActivity.this);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);// 设置text属性cb.setText(e.getEname());// 给个标记后续取出使用cb.setTag(e);lt_main_ly.addView(cb);checkBoxs[i] = cb;}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 找到idfind();// 设置初始化initData();//为按钮实现一个点击事件监听bt_main_btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//这里想要取出对象的idList<Integer> lt = new ArrayList<Integer>();Employee e = null;for (CheckBox c : checkBoxs) {//上面存放好装checkBox的数组if (c.isChecked()) {//如果被选中//取出该对象e = (Employee) c.getTag();//并添加到集合当中lt.add(e.getEid());}}//利用吐丝框的形式显示出来Toast.makeText(MainActivity.this, lt.toString(), 0).show();}});}// 找到idprivate void find() {bt_main_btn = (Button) this.findViewById(R.id.bt_main_btn);lt_main_ly = (LinearLayout) this.findViewById(R.id.lt_main_ly);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

这样子就可以实现动态的生成控件了。


原创粉丝点击