Android ArrayAdapter的问题

Android ArrayAdapter的问题,android,Android,当我试图通过下面的代码获取项目索引时 Company company = getDefaultCompany(); companyArrayAdapter.getPosition(company); 我总是希望得到-1的结果。我不明白怎么了? 因为 接下来您可以看到公司类声明 @DatabaseTable(tableName=Company.TABLE_NAME) public class Company { public static final String TABLE_NAME

当我试图通过下面的代码获取项目索引时

Company company = getDefaultCompany();
companyArrayAdapter.getPosition(company);
我总是希望得到-1的结果。我不明白怎么了? 因为

接下来您可以看到公司类声明

@DatabaseTable(tableName=Company.TABLE_NAME)
public class Company {
    public static final String TABLE_NAME = "company";

    @DatabaseField(id = true, columnName = "id")
    private UUID id;

    @DatabaseField(canBeNull=false)
    private String name;

    @DatabaseField
    private  String address;

    @DatabaseField
    private  String phone;

    @ForeignCollectionField(eager = false)
    private ForeignCollection<Contract> contracts;

    public  Company(){

    }
}
ArrayAdapter使用的方法无法比较自定义公司类对象,并且始终返回未找到的索引-1

因此,您应该在扩展ArrayAdapter的自定义适配器中重写getPosition方法:

附言
如果您有自定义适配器的片段,我会给您更详细的答案。

您可以遍历列表的循环

var list=adapter.your_list

var toMatch=yourObject

for((index,elem) in list.withIndex()){
if(elem.someUniqueProperty == toMatch.someUniqueProperty){
var needed_index=index
}
}

您在哪里初始化了阵列适配器?编辑并发布arrayadapterArray适配器的代码,当找不到该对象的索引时,该适配器返回-1。调试并检查此方法返回的是什么getDefaultCompany.getDefaultCompany具有值。ArrayAdapter在onViewCreated事件中初始化。非常感谢Mike.M。你真的帮了我的忙。公共布尔值equalsObject对象{返回this.id.equalsCompanyobj.getId;}
@Override
public int getPosition(@Nullable Company company) {
    /* here write logic of finding your company in companies list and retur index*/
     return index;
}
var list=adapter.your_list

var toMatch=yourObject

for((index,elem) in list.withIndex()){
if(elem.someUniqueProperty == toMatch.someUniqueProperty){
var needed_index=index
}
}