廢話不多說,馬上開始看看程式碼
public class PersonalInfoDataMulti extends BaseActivity{
EditText
editName , editAddress , editPhone ,data_id;
Button
confirm, cancel,newList,btnDelect;
LinearLayout
ll_in_sv , objectLayout;
ArrayList<HashMap>
objectList;
View
buttonView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.personal_info);
buttonView = LayoutInflater.from(PersonalInfoDataMulti.this).inflate(R.layout.personal_object_button, null);
ll_in_sv = (LinearLayout)findViewById(R.id.ll_in_sv);
confirm = (Button)findViewById(R.id.info_dialog_confirm);
cancel = (Button)findViewById(R.id.info_dialog_cancel);
newList = (Button)buttonView.findViewById(R.id.info_dialog_new);
addListView();
setActions();
}
public void addListView(){
objectList = new ArrayList<HashMap>();
int btnId = 0;
ll_in_sv.removeAllViews();
//personal資料來源
for (int i = 0; i < personal.size(); i++) {
HashMap<String,EditText> editMap = new HashMap();
View view = LayoutInflater.from(PersonalInfoDataMulti.this).inflate(R.layout.personal_object, null); //物件來源
LinearLayout ll = (LinearLayout) view.findViewById(R.id.ll); //取得personal_object中LinearLayout
editName = (EditText)ll.findViewById(R.id.editText1); //獲取LinearLayout中各元件
editName.setText(); //放入personal相關資料來源
editPhone = (EditText)ll.findViewById(R.id.editText2);
editPhone.setText();//放入personal相關資料來源
editAddress = (EditText)ll.findViewById(R.id.editText3);
editAddress.setText();//放入personal相關資料來源
btnDelect = (Button)ll.findViewById(R.id.btn_del);
btnDelect.setOnClickListener(clickHandler);//設定監聽method
btnDelect.setId(btnId);//將按鈕帶入id 以供監聽時辨識使用
btnId++;
//將所有的元件放入map並存入list中
editMap.put("ADDRESS", editAddress);
editMap.put("NAME", editName);
editMap.put("PHONE", editPhone);
objectList.add(editMap);
//將上面新建的例元件新增到主頁面的ll_in_sv中
ll_in_sv.addView(view);
}
//最後一筆都放上新增按鈕
ll_in_sv.addView(buttonView);
}
private void setActions(){
//設定各元件的監聽
confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("msg", "!!確定!!");
.....//儲存方式
finish();
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("msg", "!!返回!!");
finish();
}
});
newList.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("msg", "!!新增!!");
//在view中新增一筆新的list 你可以直接在 personal list 直接增加一筆然後再創立一次view
for(HashMap<String, EditText> editMap:objectList){
//我們Map中是存放EditText物件所以取出之後就像一般的物件使用喔
String name = editMap.get("NAME").getText().toString();
}
addListView();
}
});
}
//刪除
private OnClickListener clickHandler= new OnClickListener() {
@Override
public void onClick(View v) {
Button delBtn = (Button)v; //在new 出所按下的按鈕
int id = delBtn.getId()//獲取被點擊的按鈕的id
objectList.get(id);//從 objectList得到此比資料
.....刪除list(略)
addListView(); //重新整理 view
}
};
}
主要java 部份是這樣,接下來我們在加上xml檔
主要的xml
personal_info.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg"
    android:orientation="vertical" >
 <!--在此使用ScrollView 因為如果過多筆則可以讓使用者往下拉-->
    <ScrollView
     android:id="@+id/sv"
     android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_marginTop="70dp"
  android:layout_marginBottom="60dp"
  android:layout_marginRight="40dp"
  android:layout_marginLeft="40dp"
  android:gravity="center">
  <!-- ScrollView 中 只可已有一個Layout 所以我們將要新增的元件都新增到此 Layout中-->
  <LinearLayout
   android:id="@+id/ll_in_sv"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   android:focusable="true" 
      android:focusableInTouchMode="true">
  </LinearLayout>     
 </ScrollView>
 <!-- 此Layout是主頁面上所要固定的的元件 -->
 <LinearLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_alignParentBottom="true"
     android:layout_alignParentLeft="true"
     android:gravity="center" >
     <Button
         android:id="@+id/info_dialog_cancel"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:background="@drawable/input_btn_blue"
         android:text="@string/backtrack" />
     <Button
         android:id="@+id/info_dialog_confirm"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:background="@drawable/input_btn_blue"
         android:text="@string/connfirmed" />
 </LinearLayout>
</RelativeLayout>
好啦~我們的主要頁面也完成了
可是這時候還沒友好
還要在兩個xml
一個是要動態新增的xml物件
personal_object.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
<!-- 這裡的內容將會全部被動態新增到主頁面的ScrollView中
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <TextView
            android:id="@+id/textView1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/name"
            android:textColor="#DFFF"
            android:textSize="18sp" />
        <EditText
            android:id="@+id/editText1"
            style="@style/v2_inputBox"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:singleLine="true" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <TextView
            android:id="@+id/textView2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/phone"
            android:textColor="#DFFF"
            android:textSize="18sp" />
        <EditText
            android:id="@+id/editText2"
            style="@style/v2_inputBox"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:singleLine="true" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <TextView
            android:id="@+id/textView3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/address"
            android:textColor="#DFFF"
            android:textSize="18sp" />
        <EditText
            android:id="@+id/editText3"
            style="@style/v2_inputBox"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:singleLine="true" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    <Button
  android:id="@+id/btn_del"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginLeft="50dp"
  android:layout_marginRight="50dp"
  android:background="@drawable/input_btn_blue"
  android:text="@string/delete" />
 <TextView
  android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/v2_bg_line"
        android:textColor="#DFFF"/>
 <EditText
            android:id="@+id/data_id"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone" />
 </LinearLayout>
-->
</LinearLayout>
大致上到這裡是可以呈現我們所要的東西了
可是因為我在list的最後會加上一個新增的按鈕
所以還要在一個xml來顯示新增的按鈕
personal_object_button.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/addLl"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <Button
  android:id="@+id/info_dialog_new"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background="@drawable/input_btn_blue"
  android:text="@string/added" />
</LinearLayout>
完成的畫面


