動態加載佈局和控件的方式實現動態加載(用listView解決EditText問題挺麻煩)

//第一步要聲明些map來保存這些控件數組

Map<String, EditText> map_edit ;  // 根據 mxb中的 autobh ->memo封裝  控件
 Map<String, String> map_v ;// 封裝mxb中的autobh->jcjg
 List<String> list_bh ; // 封裝mxb中  autobh
 Map<String, String> map_jcnr = new HashMap<String, String>(); // 封裝mxb中的autobh->jcnr:爲發現問題設置ide

 

 

//第二步佈局

剛進來的時候,先須要獲取一些基本數據,好比這裏得到一個對象數組this

 cyjxdList=czff.GetList_Person(MainActivity.this,zfrybh, mima, bsh);對象

 

第三步,根據獲取到的數據,要填入相應的內容了,而且獲取索輸入的內容,addview在handleMessage(Message msg)中能夠調用,get


/*生成視圖1*/
 @SuppressLint("NewApi")
 private void addview() {
  // TODO Auto-generated method stub
  list_bh = new ArrayList<String>();
  for(int i=0;i<size;i++)
  {
   //new 一個線性佈局   準備裝填內容
   LinearLayout linear = new LinearLayout(this);
   linear.setBackgroundColor(color[i%2]);
   linear.setOrientation(LinearLayout.VERTICAL);
  
   //獲取當前的一個對象,保存下
         final Person info = Persons.get(i);
   TextView text = new TextView(this);
   //好比這裏書寫調查的內容
   text.setText((++idex)+"、"+info.JCNR);
   text.setTextSize(text_size_xmmc);
   text.setTextColor(getResources().getColor(R.color.black));
   LayoutParams l = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
   //設置距離左上右下位置
   l.setMargins(10, 15, 0, 0);
   linear.addView(text,l);
   //把perosn的num放在list_bh的list中,把它記錄下來
   list_bh.add(info.personNum+"");it

   //下面再新建一個先對佈局了
   RelativeLayout linear1 = new RelativeLayout(this);
   RelativeLayout.LayoutParams lll = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
   lll.setMargins(25, 15, 0, 0);io

     //合格,不合格   放在一個線性佈局中
    LinearLayout lin_1 = new LinearLayout(this);
    lin_1.setOrientation(LinearLayout.HORIZONTAL);table

    final MyCheck r1 = new MyCheck(this, null);
    r1.setTextSize(text_size_check);
    r1.setTextColor(getResources().getColor(R.color.black));
    r1.setText("合格");List

    final MyCheck r2 = new MyCheck(this, null);
    r2.setTextSize(text_size_check);
    r2.setTextColor(getResources().getColor(R.color.black));
    r2.setText("不合格");

    lin_1.addView(r1);
    lin_1.addView(r2);
    linear1.addView(lin_1,lll);
                //記錄當前的檢查結果合格不合格
    map_v.put(info.AUTOBH+"","空");

    r1.setOnClickListener(new OnClickListener() {
     @Override
     public void onClick(View arg0) {
      // TODO Auto-generated method stub
      info.JCJG ="男" ;
      r1.setChecked(true);
      r2.setChecked(false);
      //若是合格,map中的值該成合格。
      map_v.put(info.AUTOBH+"","男");
     }
    });
    r2.setOnClickListener(new OnClickListener() {

     @Override
     public void onClick(View arg0) {
      // TODO Auto-generated method stub
      info.JCJG ="女" ;
      r1.setChecked(false);
      r2.setChecked(true);
      map_v.put(info.AUTOBH+"","女");
     }
    });

  
   //這裏要搞一個備註了
   EditText ed = new EditText(this);
   ed.setTextSize(text_size_check);
   ed.setTextColor(getResources().getColor(R.color.black));
   ed.setSingleLine(true);

   DisplayMetrics dm = new DisplayMetrics();
   getWindowManager().getDefaultDisplay().getMetrics(dm);
   int screenW = dm.widthPixels;

   RelativeLayout.LayoutParams llll = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
   llll.setMargins(screenW/2, 15, 25, 0);
             //map中保存當前的備註Edittext
   map_edit.put(info.personNum+"",ed);
   //檢查內容也把它放在檢查內容中
   map_jcnr.put(info.personNum+"",info.JCJG);

   linear1.addView(ed,llll);
           //edittext回調實現,這裏能夠把它顯示出來
   ed.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
     // TODO Auto-generated method stub
    }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
      int after) {
     // TODO Auto-generated method stub
    }
    @Override
    public void afterTextChanged(Editable s) {
     // TODO Auto-generated method stub
    }
   });

   linear.addView(linear1);   zdjc_cyjxd_lin.addView(linear);  }  //當前的第一個佈局得edittext獲取焦點  map_edit.get(list_bh.get(0)).requestFocus(); }

相關文章
相關標籤/搜索