我想在长按时删除 ListView 上的项目
Posted
技术标签:
【中文标题】我想在长按时删除 ListView 上的项目【英文标题】:I want to delete items on ListView when longpressed 【发布时间】:2016-09-07 21:45:06 【问题描述】:我想在长按时删除 listView 上的项目。在此代码中,您可以使用 Button 添加(使用edittext)列表项,如下所示。
我无法编写长按删除它们的代码。我该怎么办?
理想情况下,长按会弹出一个菜单,用户可以触摸和删除他们想要的部分。
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
addButton = (Button) findViewById(R.id.addButton);
listView = (ListView) findViewById(R.id.listView);
listItems = new ArrayList<String>();
listItems.add("First Item - added on Activity Create");
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listItems);
listView.setAdapter(adapter);
addButton.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
listItems.add(editText.getText().toString());
adapter.notifyDataSetChanged();
);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> a, View v, int position,
long id)
Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_LONG)
.show();
);
【问题讨论】:
【参考方案1】:试试这个:
listView.setOnItemLongClickListener(new OnItemLongClickListener()
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long arg3)
adapter.remove(data[position]);//position of the item you click
adapter.notifyDataSetChanged();
return false;
);
【讨论】:
【参考方案2】:你可以用动画来做到这一点:
listView.setOnItemLongClickListener(new OnItemLongClickListener()
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long arg3)
adapter.remove(data[position]);//position of the item you click
adapter.notifyItemRemoved(position);
return false;
);
【讨论】:
【参考方案3】:在长按时删除列表视图项目,当您从列表视图中删除任何项目时,它应该显示警报对话框
listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener()
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
removeItemFromList(position);
return true;
private void removeItemFromList(int position)
final int deletePosition = position;
AlertDialog.Builder alert = new AlertDialog.Builder(
this);
alert.setTitle("Delete");
alert.setMessage("Do you want delete this item?");
alert.setPositiveButton("YES", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
// TOD O Auto-generated method stub
// main code on after clicking yes
songsList.remove(deletePosition);
songAdapter.notifyDataSetChanged();
songAdapter.notifyDataSetInvalidated();
);
alert.setNegativeButton("CANCEL", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
// TODO Auto-generated method stub
dialog.dismiss();
);
alert.show();
【讨论】:
以上是关于我想在长按时删除 ListView 上的项目的主要内容,如果未能解决你的问题,请参考以下文章
如何使用选择器在长按时“永久”突出显示 ListView 行,但在正常按下时短暂显示
我想在滚动时在列表视图中添加 500 张图像,并删除当前不在屏幕上的项目
将 headerView 添加到小部件上的小部件中的 listView 调整大小 android