android - 如何使用自定义数组适配器删除自定义列表中的特定列表项(列表行)?

标签 android listview android-arrayadapter

我是 Android 新手,我正在开发一个应用程序,在其中扫描 NFC 卡并将 NFC 的结果字符串与列表中的值进行匹配。 所以我想要的是,当 NFC 的结果与任何列表项匹配时,应删除匹配的列表项(列表行)。 下面是自定义 ListView 的代码:

public class Item {
     private String StdName;
     private String Id;
     private int img;

public Item() {

}

public Item(String name, String id, int img) {
    this.StdName = name;
    this.Id = id;
    this.img = img;
}
//getters & setters...
 ...
}

并使用自定义数组适配器

 public class ItemAdapter extends ArrayAdapter<Item>

将元素添加到列表中,如下所示:

 private ArrayList<Item> m_parts = new ArrayList<Item>();
 m_parts.add(new Item(StdntId, StudentName, R.drawable.cancel));
 m_adapter = new ItemAdapter(MainActivity.this, R.layout.list_row, m_parts);
 listView.setAdapter(m_adapter);

我需要找出 Id(列表项中的字段)与 NFC 字符串匹配的列表项的索引,以便我可以按索引删除列表项。 主要问题是将结果字符串(例如“2”)与自定义数组列表中的“id”字段(即 m_parts)进行比较,该字段总共有 3 个字段,例如(字符串 id、字符串名称、整数 img)。所以我想将我从感应​​ nfc 标签中获得的字符串与 m_parts 数组列表中的“id”字段进行匹配,所以请帮助/指导我完成任务。

谢谢!!!

最佳答案

您需要从列表中删除该项目,然后告诉适配器它已被删除,如下所示:

this.m_parts.remove(position);
notifyItemRemoved(position);

获取位置的逻辑将根据其余代码的工作方式而有所不同。

要匹配您的字符串,只需循环遍历每个项目并查看它是否匹配,如果匹配,则删除/删除它。像这样的事情:

public void checkAndDeleteMatchingIds(String idToMatch) {
    for (int i = 0; i < m_parts.size(); i++) {
        if (m_parts.get(i).getId().equals(idToMatch)) {
            removePart(i);
        }
    }
}

public void removePart(int position) {
    this.m_parts.remove(position);
    notifyItemRemoved(position);
}

以上代码将位于您的适配器内,在扫描时调用 checkAndDeleteMatchingIds。

关于android - 如何使用自定义数组适配器删除自定义列表中的特定列表项(列表行)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33256946/

相关文章:

android - 如何使用 Android Places API AutocompleteFilter

java - Android - 如何更改此 findViewById 以使其工作?

java - 无法从 AsyncTask 填充 ListView

android - ListView 过滤后不更新

android - 使用多个可点击按钮在 ListView 中获取精确点击的按钮

Android - 自定义 ListView 适配器 - 多选删除 - Indexoutofbounds - 为什么?

java - Android 从 gridview 中删除一个项目

android - 如何仅使用加速度计找到速度?

listview - 水平视口(viewport)被赋予了无限的高度

android - Listview onItemClick 有时没有响应