我有一个android应用程序,有多个输入表单和多个下拉列表。对于这些表单,用户可以在提交记录之前多次输入和退出记录。因此,如果他们在下拉列表中选择某个条目,退出记录,然后再次返回,他们会期望看到他们的最后一个条目已经在下拉列表中预选。
下面是驱动下拉列表的许多类类型之一的示例:
public class SART implements Serializable
{
private String Code;
private String Description;
public String getCode() {return Code;}
public void setCode(String Code) {this.Code = Code;}
public String getDescription() {return Description;}
public void setDescription(String Description) {this.Description = Description;}
}
所以我取一个已知值,在驱动下拉列表的数组列表中查找它的位置,然后在下拉列表中选择这一行。下面是我如何做到这一点的一个例子:
int FindApplicationMethodPosition(ArrayList<SART> applicationMethods,String strExistingId)
{
int intSARTPosition = -1;
if (strExistingId !=null)
{
for(int i = 0; i <applicationMethods.size(); i++){
if(applicationMethods.get(i).getCode().equals(strExistingId))
{
intSARTPosition = i;
break;
}
}
}
return intSARTPosition;
}
我有大约30种不同版本的代码,我想尝试调用一个通用版本。
int FindPositionGeneric(Object array, String strExistingId)
{
int intRC = -1;
intRC = IntStream.range(0, array.size())
.filter(i -> array.get(i).getCode().equals(strExistingId))
.findFirst()
.orElse(-1);
return intRC;
}
当然,编译器一点也不喜欢这样。有什么建议吗?
2条答案
按热度按时间nzrxty8p1#
当然,编译器一点也不喜欢这样。
它不知道如何从
array
,也不知道如何获得code
从数组中的元素。通过
List<T>
,和Function<T, String>
要允许它提取代码:请注意,这对于非-
RandomAccess
列表(例如。LinkedList
). 另一种解决办法是ListIterator
-基于循环:yxyvkwin2#
如果类的所有30个版本都有相同的
getCode()
,然后创建一个接口(顺其自然)MyInterface
)并让所有类实现这个接口。然后更新方法如下:还有,既然你有
orElse
,无需初始化intRC
分开。