转自:
http://blog.163.com/promise_wg/blog/static/189120014201162442857324/
要实现添加按钮的操作,必须自定义Adapter,使用Button View的setTag()方法,将Button所属的位置设置到tag当中
要实现动态添加删除ItemView的操作,必须首先调整调整Adapter所绑定的数据源,然后调用Adapter的notifyDataSetChanged()方法
以下为实现的一个实例:
要实现添加按钮的操作,必须自定义Adapter,使用Button View的setTag()方法,将Button所属的位置设置到tag当中
要实现动态添加删除ItemView的操作,必须首先调整调整Adapter所绑定的数据源,然后调用Adapter的notifyDataSetChanged()方法
以下为实现的一个实例:
package com.jason.joysmsyd;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class SendMain extends ListActivity implements OnClickListener{
Button buttonMessage,buttonContact,buttonHistory;
EditText textMessage;
List<Map<String,String>> contacts = new ArrayList<Map<String,String>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.setContentView(R.layout.layout_send);
buttonMessage = (Button) this.findViewById(R.id.ButtonMessage);
buttonContact = (Button) this.findViewById(R.id.ButtonContact);
buttonHistory = (Button) this.findViewById(R.id.ButtonHistory);
textMessage = (EditText)this.findViewById(R.id.EditTextMessage);
textMessage.setText(this.getIntent().getExtras().getString("message"));
}
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.ButtonMessage:
this.finish();
break;
case R.id.ButtonContact: {
Intent intent = new Intent();
intent.setAction("com.jason.action.contact");
this.startActivityForResult(intent, 0);
}
break;
case R.id.ButtonHistory: {
Intent intent = new Intent();
intent.setAction("com.jason.action.history");
this.startActivityForResult(intent, 1);
}
break;
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == RESULT_OK) {
this.getcontactFromString(data.getExtras().getString(
UserSelectActivity.RETURN_LIST));
bindDataToList();
}
}
private void getcontactFromString(String data) {
if (data == null || data.length() == 0) {
return;
}
String[] arrayContact = data.split("#");
for (String singleContact : arrayContact) {
if (singleContact != null && singleContact.length() > 0) {
String[] props = singleContact.split(":");
if (props.length == 2) {
Map<String,String> contact = new HashMap<String,String>();
contact.put("name", props[0]);
contact.put("phone", props[1]);
contacts.add(contact);
}
}
}
}
private void bindDataToList() {
this.setListAdapter(new MyAdapter());
}
public class MyAdapter extends BaseAdapter{
public int getCount() {
// TODO Auto-generated method stub
return contacts.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return contacts.get(position);
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = SendMain.this.getLayoutInflater();
final View view = inflater.inflate(R.layout.layout_user_item, null);
final TextView textPhone = (TextView) view.findViewById(R.id.text1);
final TextView textName = (TextView) view.findViewById(R.id.text2);
Button button = (Button)view.findViewById(R.id.buttonDelete);
textPhone.setText(contacts.get(position).get("phone"));
textName.setText(contacts.get(position).get("name"));
button.setTag( position);
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
int position = Integer.parseInt(v.getTag().toString());
contacts.remove(position);
MyAdapter.this.notifyDataSetChanged();
// SendMain.this.getListView().refreshDrawableState();
}});
return view;
}
}
}