ListView檢視動態增加與刪除控制元件條目,內容
阿新 • • 發佈:2019-01-10
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
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