基于地图的短信追踪小练习(6)对话框之item的删除

我们现在要点击item中的button弹出确认删除的对话框,点击确认之后删除listview中的对应item

初始思路:

重写onItemClick方法即可。

写完一点,发现没有动静!这不应该,百度发现是因为listview的item中有button,它抢占了点击事件的焦点。所以点击item是监听不到的。

解决方案:

在父布局中:
加入:

android:descendantFocusability="blocksDescendants"

在子控件(Button等)中加入

android:focusable="false"

可以避免焦点被抢占


那么,接着,我们要来实现item中的button的点击事件:

我们把适配器重新继承自baseadapter并且在getview中加入相关逻辑:

public class FriendsAdapter extends BaseAdapter {
	    private int resourceId;
		private LayoutInflater mInflater;
		private Context context; 
		private List<Friends> data = new ArrayList<Friends>(); 
		public FriendsAdapter(Context context,ArrayList<Friends> data)
		{
			this.context = context; 
			this.data = data;  
			this.mInflater = LayoutInflater.from(context);
		}
		@Override
		public int getCount() {
			return ListAll.friendslist.size();
		}

		@Override
		public Object getItem(int position) {
			return null;
		}

		@Override
		public long getItemId(int position) {
			return 0;
		}
		@Override
		public View getView(final int position, View convertView, ViewGroup parent)
		{
			 ViewHolder holder = null;
				if (convertView == null) {
					
					holder=new ViewHolder();  
					
					convertView = mInflater.inflate(R.layout.friends_list_item, null);
					holder.info = (TextView)convertView.findViewById(R.id.name_cell);
					holder.viewBtn = (Button)convertView.findViewById(R.id.delete_button_cell);
					convertView.setTag(holder);				
				}else {				
					holder = (ViewHolder)convertView.getTag();
				}		
				
				holder.info.setText((String)ListAll.friendslist.get(position).getName());
				holder.viewBtn.setTag(position);
				
				holder.viewBtn.setOnClickListener(new View.OnClickListener() {
					
					@Override
					public void onClick(View v) {
						//showInfo(position);	
						 LayoutInflater inflater = getLayoutInflater();
			    		 layout = inflater.inflate(R.layout.dialog_delete,null);
			    		 ad = new AlertDialog.Builder(FriendListActivity.this).setView(layout).show();
			    		 //点击勾勾,代表确认删除
			    		 button4 = (Button)layout.findViewById(R.id.btn_dialog_ok2);
			    		   button4.setOnClickListener(new OnClickListener()
			    		   {
			    		   	   @Override
			    		   	   public void onClick(View v)
			    		   	   {
			    		   		   listView.setAdapter(adapter);
			    		   		   ListAll.friendslist.remove(position);
			    		   		   ad.dismiss(); 
			    		   	   }
			    		   });
			    		   //点击叉叉,代表取消删除
			    		   button5 = (Button)layout.findViewById(R.id.btn_dialog_close2);
			    		   button5.setOnClickListener(new OnClickListener()
			    		   {
			    		   	   @Override
			    		   	   public void onClick(View v)
			    		   	   {
			    		   		   ad.dismiss(); 
			    		   	   }
			    		   });
					}
				});

				return convertView;
		}
	}
删除用remove函数(position是获取到的角标),之后再重新刷一下,就可以了。

测试删除功能成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值