1. 程式人生 > >ListView檢視動態增加與刪除控制元件條目,內容

ListView檢視動態增加與刪除控制元件條目,內容

package com.example.listviewasitem; import java.util.ArrayList; import android.content.Context;
import android.text.Editable;
import android.text.Selection;
import android.text.SpannableStringBuilder;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView; public class AddNumberBaseAdpater extends BaseAdapter {  private LayoutInflater mInflater;
 private ArrayList<String> text;
 int tindex = 0;
 String temp;
 int sp;  public AddNumberBaseAdpater(Context context) {
  text = new ArrayList<String>();
  text.add("第1個自定義控制元件條目");// 預設只加載1個Item   this.mInflater = LayoutInflater.from(context);  }  public int getCount() {
  // TODO Auto-generated method stub
  return text.size();
 }  public Object getItem(int position) {
  return text.get(position);
 }  public long getItemId(int position) {
  // TODO Auto-generated method stub
  return position;
 }  public View getView(final int position, View convertView, ViewGroup parent) {
  // TODO Auto-generated method stub   // final ViewHolder holder = new ViewHolder();
  final ViewHolder holder;// 新建holder一定要放在if內
  if (convertView == null) {
   holder = new ViewHolder();// 新建holder一定要放在if內
   convertView = mInflater.inflate(R.layout.addnumber, null);
   holder.btnOpen = (ImageButton) convertView
     .findViewById(R.id.ibtnAddNumber);
   holder.editText = (EditText) convertView
     .findViewById(R.id.editNumber);
   convertView.setTag(holder);   } else {
   // Log.d("getView","getView called convertView !== null ");
   holder = (ViewHolder) convertView.getTag();
  }   // ////////////////////////////////////////////////////////////////////////////
  switch (position) {// 不要以為XML檔案中是2個按鈕,其實只有一個
  case 0:    holder.btnOpen
     .setBackgroundResource(android.R.drawable.ic_input_add);// 第一項按鈕則顯示加號圖片
   // holder.editText.setText(text.get(tindex));    break;   default:    holder.btnOpen.setBackgroundResource(android.R.drawable.ic_delete);// 超過了一項則顯示減號圖片,可以刪除
   break;
  }
  holder.editText.setText(text.get(position));
  holder.ref = position;
  // //////////////////////////////////////////////////////////////////////////////
  //新增EditText文字輸入並儲存到text.
  holder.editText
    .setOnFocusChangeListener(new View.OnFocusChangeListener() {      @Override
     public void onFocusChange(View v, boolean hasFocus) {
      // TODO Auto-generated method stub
      holder.editText.getText();
      text.remove(position);
      text.add(position, holder.editText.getText().toString());      }     });   holder.btnOpen.setOnClickListener(new View.OnClickListener() {// 新增按鈕      public void onClick(View v) {
      if (position == 0) {
       // text.add("xxx");// 新增一項控制元件
       tindex = tindex + 1;
       text.add("第" + String.valueOf(tindex + 1)
         + "自定義控制元件條目:");// 新增一項控制元件       } else if (position > 0) {// 始終留一項不能刪除
       text.remove(position);// 刪除選定按鈕
       // text.remove(text.size() - 1);// 刪除最後一個按鈕
       tindex = tindex - 1;
      }       notifyDataSetChanged();      }
    });   return convertView;
 }  private class ViewHolder {
  public EditText editText;
  public ImageButton btnOpen;
  int ref;
 }
} 佈局檔案比較簡單,就不傳了。原始碼下載地址:http://download.csdn.net/detail/xiaozenbin/9747532