2013-02-18 59 views
0

我正在創建添加聯繫人活動。只有一個編輯文本和一個按鈕(+),當點擊按鈕時,應該添加另一個編輯文本,並且上一個按鈕應該變成( - )。通過這種方法,我想添加和刪除編輯文本字段。 Some thing like this.我這樣做,但無法實現我想要的。任何想法?Android在(+)按鈕上添加edittext字段並通過點擊刪除( - )

public class TextField extends Activity { 

Context con; 
TableLayout table; 
TableRow tr[] = new TableRow[6]; 
EditText txt[] = new EditText[6]; 
//ImageView img[] = new ImageView[5]; 
Button img[]=new Button[6]; 
int count ; 
int lastDeletedIndex; 
int lastPopulatedIndex; 
boolean isDel; 
public void onCreate(Bundle obj) { 
    super.onCreate(obj); 
    // Log.d("","On Create"); 
    con = this; 
    count = 1; 

    table = new TableLayout(this); 
    tr[count] = new TableRow(this); 
    tr[count].setId(count); 
    tr[count].setLayoutParams(new TableRow.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 

    txt[count] = new EditText(this); 
    txt[count].setId(count); 
    txt[count].setText("1"); 
    txt[count].setMaxLines(1); 
    txt[count].setWidth(160); 

     img[count] = new Button(this); 
     img[count].setId(count); 
     img[count].setText("+"); 
     img[count].setBackgroundResource(R.drawable.add); 
     img[count].setPadding(5, 7, 20, 0); 


    tr[count].addView(txt[count]); 
    tr[count].addView(img[count]); 
    tr[count].setPadding(20, 20, 0, 0); 

    img[count].setOnClickListener(new OnClick(img[count])); 

    table.addView(tr[count]); 
    setContentView(table); 

} 

class OnClick implements OnClickListener { 

    View view; 

    Button addIcon; 

    public OnClick(View view) { 

     this.addIcon = (Button) view; 

    } 

    @Override 
    public void onClick(View arg0) { 

      int id=addIcon.getId(); 
     if(addIcon.getText().toString().equals("-")) 
     { 

      if ((id >1 )) { 
       isDel=true; 
       count=id; 
       lastDeletedIndex=id; 
       txt[count]=null; 
       img[count]=null; 
       table.removeView(tr[count]); 
       tr[count]=null; 
       Log.d("", "Cancel img Id" + addIcon.getId()); 
       }  


     } else { 
      if (count <5) { 
       if(table.getChildCount()!=5) 
       { 
        addIcon.setBackgroundDrawable(getResources().getDrawable(R.drawable.delete)); 
        addIcon.setText("-"); 


       addIcon.setId(count); 
       if(!isDel) { 
        count++; 
       }else 
       { 
        count=lastDeletedIndex; 
       } 


       tr[count] = new TableRow(con); 
       tr[count].setId(count); 


        img[count] = new Button(con); 
       img[count].setId(count); 
       img[count].setBackgroundDrawable(getResources().getDrawable(R.drawable.add)); 
       img[count].setText("+"); 
       img[count].setPadding(3, 7, 20, 0); 
       img[count].setOnClickListener(new OnClick(img[count])); 

       txt[count] = new EditText(con); 
       txt[count].setId(count); 
       txt[count].setText(""+count); 
       txt[count].setMaxLines(1); 
       txt[count].setWidth(160); 

       tr[count].addView(txt[count]); 

       tr[count].addView(img[count]); 

       tr[count].setPadding(20, 20, 0, 0); 
       table.addView(tr[count]); 
       setContentView(table); 
       isDel=false; 

       lastPopulatedIndex=count; 

       Log.d("", "Cancel img Id" + addIcon.getId()); 
       } 
      } else 
       ShowDialog.showAlert("Info","You can't add more than 5 contacts!", con); 
     } 

    } 
} 
+0

你見過SDK樣本那裏你可以找到這個 – Dilip 2013-02-18 11:58:14

+0

的很好的例子是,你需要開始閱讀「的Android版本:動態創建傻瓜佈局」。如果你有更具體的問題,請回來,在這裏問問! – Veger 2013-02-18 11:59:35

+0

你有沒有使用edittext的子視圖,將很容易添加和刪除按鈕單擊視圖.. – 2013-02-18 11:59:45

回答

2
private void addEditView() { 
     // TODO Auto-generated method stub 
      LinearLayout li=new LinearLayout(this); 
      EditText et=new EditText(this); 
      Button b=new Button(this); 

      b.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       int pos=(Integer) v.getTag(); 
       mainLayout.removeViewAt(pos); 

      } 
     }); 

      b.setTag((mainLayout.getChildCount()+1)); 
    } 

當你點擊一個addEditText按鈕時調用這個函數。

+0

我已經這樣做了。但是有一個很大的概率,那就是組件的id。 「button.setonClickListener(新onClickListener()」在這裏我按鈕是動態創建和動態的ID給,我怎麼可以比較ID,我不知道.. – Sandeep 2013-02-18 12:30:35

+0

setTag把它當成真正從getTag找回來。 – 2013-02-18 12:32:31

+0

你在這裏談論的IDS我沒有得到你。 – 2013-02-18 12:34:30

3

使用此代碼在您的活動:

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    // TODO Auto-generated method stub 

    if (event.getKeyCode() == KeyEvent.KEYCODE_PLUS) 
    { 
      if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) 
      { 
       LinearLayout mLinearLayout = new LinearLayout(this); 
       mLinearLayout = (LinearLayout)findViewById(R.id.mylinearlayout); 

           EditText lEditText = new EditText(this); 
          lEditText.SetText("Text Here"); 
          mLinearLayout.addView(lEditText); 

        } 
      } 
    return super.dispatchKeyEvent(event); 
} 
0

您應該創建Android的佈局(也許LinearLayout中或TableLayout),比創建視圖在Java代碼中(Android的活動)

簡單的例子;

視圖視圖 =新視圖(本);

如果視圖創建成功,您可以添加此代碼 - > .addView(視圖); 或 如果視圖已經添加則可以刪除該代碼示例 - > .removeView(視圖);

相關問題