出现的问题是;当长时间点击listview的时候,触发长时间点击事件的同时也会触发点击事件,处理的办法是在长时间点击事件中加上return true;这样就可以很好的解决了。
给listview天机长时间点击事件:
public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); final ListView listView = (ListView) getActivity().findViewById(R.id.list_view); listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, final View view, final int position, long id) { AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext()); final Message[] account = {null}; account[0] = alllistmessage.get(position); builder.setTitle("是否确定删除此账单???"); builder.setMessage("账单内容如下:\n"+"用户: "+account[0].username+" 金额: "+account[0].usermoney+" 类型: "+account[0].userkind+"\n日期: "+account[0].userdata); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dbOpenMessage.deletebyid(account[0].userevent,account[0].usermoney, account[0].username); alllistmessage.remove(position); adapter.notifyDataSetChanged(); Toast.makeText(view.getContext(), "删除该事件成功", Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.create().show(); return true; } });
这里面包含数据库的相关操作。在对象列表删除相应listview子控件的同时,在数据库也要删除相应的账单信息。
相应的实验截图如下:
原文:https://www.cnblogs.com/dazhi151/p/12301319.html