java - 单击项目时从 ListView 中删除项目

标签 java android listview android-studio

我目前有以下代码可以在 ListView 中显示所选项目:

public class DisplayOrder extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_order);
    bar();

    Button btn = (Button) findViewById(R.id.btnHome);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent(DisplayOrder.this, Options.class);
            startActivity(myIntent);

        }
    });
}

private void bar() {


    ListView lv = (ListView) findViewById(R.id.listViewDisplay);

    List<String> itemsOrdered = new ArrayList<String>();


    for (Map.Entry<Item, Integer> entry : Datastore.currentTable.getOrder().getItems().entrySet()) {
        itemsOrdered.add((entry.getKey().name) + " x " + String.valueOf(entry.getValue()) + " £" + (entry.getKey().price * entry.getValue()));
    }


    // This is the array adapter, it takes the context of the activity as a
    // first parameter, the type of list view as a second parameter and your
    // array as a third parameter.
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getBaseContext(), R.layout.activity_display_order, R.id.textView8, itemsOrdered);

    lv.setAdapter(arrayAdapter);
}
}

我想要做的是,当我单击其中一个项目时,将其删除,但我不知道该怎么做。任何指导将不胜感激。

最佳答案

您应该通过 setOnItemClickListener 检测何时单击 ListView 的每个项目。
然后在这个方法中,只需删除列表数据源并notifyDataSetChanged

lv.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView < ? > parent, View view,int position, long id) {

        itemsOrdered.remove(position); // remove item at index in list datasource
        arrayAdapter.notifyDataSetChanged(); // call it for refresh ListView

        Toast.makeText(getApplicationContext(), "remove item at " + position, Toast.LENGTH_LONG).show(); 
    }

});

关于java - 单击项目时从 ListView 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37403175/

相关文章:

java - 如何在 Dropwizard 中的测试类中初始化包

java - Eclipse:以 "Current directory' 和 "Java application"运行时获取差异 "on server"s 路径

android - 简单的滑动手势到 Activity 教程?

java - 查询 firebase 数据库时如何将项目追加到 OnDataChange 内的 ArrayList

android - 在 Android 4 中更改首选项摘要文本颜色

java - 如何从 shell 或 windows 命令行以内联方式执行 java jshell 命令

java - 将 JMockit 模拟注入(inject) Spring 上下文

php - 填充 ListView 的服务内的 AsyncTask

android - Android 布局中 ListView 下方的粘性页脚

android - ListView 的背景颜色百分比