我想找到自定义数组列表的索引。 这是我的自定义数组列表:
private ArrayList<UserData> ListItems = new ArrayList<>();
UserData list = new UserData("list", "5", R.drawable.email_black, false);
UserData list1 = new UserData("list1", "3",R.drawable.text_msg, false);
UserData list2 = new UserData("list2", "2",R.drawable.phone_call, false);
ListItems.add(list);
ListItems.add(list1);
ListItems.add(list2);
我做的如下,但没有得到索引。
int m = ListItems.indexOf("list1");
UserData obj = ListItems.get(m);
String name = obj.getName();
我需要名字字符串中的list1。
答案 0 :(得分:1)
indexOf
方法基于参数,列表中的项目相同。由于它们不是(一个是UserData
个实例而另一个是String
),因此您无法使用indexOf
。相反,你必须自己实现这个逻辑:
private UserData getUserDataByName(String name) {
for (UserData item : listItems) {
if (item.getName().equals(name)) {
return item;
}
}
// Not found, return null;
return null;
}
答案 1 :(得分:1)
迭代您的数组列表以获取所需的数据。 做类似下面的事情:
for (int i = 0; i < ListItems.size(); i++) {
String userListName = ListItems.get(i).getListName();
if(userListName.equals("list1")){
//Do something here
}else{
//Nthng to do
}
}
答案 2 :(得分:1)
在这种情况下,您也可以使用HashMap。使用HashMap<String,UserData>
,其中String将是&#34; list&#34;,&#34; list1&#34;等
前 -
map.put("list", list);