我是 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/