我是android的新手,我在开发一个应用程序,其中我正在扫描NFC卡,并将所生成的NFC字符串与列表中的值进行匹配。所以我想要的是当NFC的结果与任何列表项匹配时,应删除匹配的列表项(列表行)。以下是自定义列表视图的代码:
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”)与自定义数组列表(即m_parts)中的“ id”字段进行比较,该字段共有3个字段,例如(字符串id,字符串名称,整数img)。所以我想匹配从m_parts array-list中的“ id”字段感应到nfc标签得到的字符串,因此请帮助/指导我完成任务。
谢谢!!!
您将需要从列表中删除该项目,然后像这样告诉适配器已将其删除:
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。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句