如果标题的第一个字符在列表中第一次匹配,我需要隐藏或显示 listView 行的标签。我附上可以帮助清楚理解的图片。
当我创建联系人的 ArrayList 时,我尝试这样做:
public ArrayList<ContactItem> getDisplayContacts(Context context)
{
ArrayList<ContactItem> contactsList = null;
DatabaseHandler db = new DatabaseHandler(context.getApplicationContext());
try {
Dao<ContactItem,Integer> daoSubject = db.getContactDao();
contactsList = (ArrayList<ContactItem>) daoSubject.queryForAll();
}
catch(Exception e)
{e.printStackTrace();}
Collections.sort(contactsList, new Comparator<ContactItem>() {
@Override
public int compare(ContactItem lhs, ContactItem rhs) {
return lhs.getName().compareTo(rhs.getName());
}
});
for (int i =0; i< contactsList.size()-1;i++)
{
if (!contactsList.get(i).getName().substring(0,1).equalsIgnoreCase(contactsList.get(i+1).getName().substring(0,1)))
contactsList.get(i).setContactLabel(true);
else
contactsList.get(i).setContactLabel(false);
}
return contactsList;
}
但没有得到正确的结果。我还尝试将所有视图放入自定义 ArrayAdapter 并在创建 listView 后进行更改,但这也没有帮助。在 getView 中检查标题和显示/隐藏标签也没有帮助。将非常感谢任何帮助。