Android – ListView 中添加按钮,动态删除添加ItemView的操作

转自: http://blog.163.com/promise_wg/blog/static/189120014201162442857324/

要实现添加按钮的操作,必须自定义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;
     }
      }
 }


转载于:https://www.cnblogs.com/sesexxoo/archive/2013/04/12/6189943.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要向 Android ListView 动态添加删除数据,可以使用以下方法: 1. 创建一个适配器(Adapter):ListView 用适配器来显示数据。适配器是一个抽象类,你需要继承这个类,并重写其的方法,以便自定义你的适配器。 2. 创建一个数据源(ArrayList):数据源是一个包含数据的集合,每当需要向 ListView 添加删除数据时,你需要对数据源进行修改。 3. 将数据源与适配器绑定:你需要将数据源与适配器绑定,这样 ListView 才能够显示数据。 4. 调用适配器的方法:你可以通过调用适配器的方法来实现向 ListView 动态添加删除数据。例如,调用适配器的 notifyDataSetChanged() 方法可以通知 ListView 更新数据。 具体实现过程如下: 1. 创建一个适配器类,继承 ArrayAdapter 类,重写其的方法。 ```java public class MyAdapter extends ArrayAdapter<String> { private Context mContext; private List<String> mData; public MyAdapter(Context context, List<String> data) { super(context, android.R.layout.simple_list_item_1, data); mContext = context; mData = data; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { LayoutInflater inflater = LayoutInflater.from(mContext); view = inflater.inflate(android.R.layout.simple_list_item_1, parent, false); } String item = mData.get(position); TextView textView = view.findViewById(android.R.id.text1); textView.setText(item); return view; } } ``` 2. 创建一个数据源,存储需要显示的数据。 ```java List<String> mData = new ArrayList<>(); mData.add("Item 1"); mData.add("Item 2"); mData.add("Item 3"); ``` 3. 将数据源与适配器绑定,将适配器设置为 ListView 的适配器。 ```java MyAdapter adapter = new MyAdapter(this, mData); ListView listView = findViewById(R.id.list_view); listView.setAdapter(adapter); ``` 4. 调用适配器的方法,实现动态添加删除数据。 ```java // 添加数据 mData.add("New item"); adapter.notifyDataSetChanged(); // 删除数据 mData.remove("Item 1"); adapter.notifyDataSetChanged(); ``` 以上就是向 Android ListView 动态添加删除数据的实现方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值